Entity Framework Core表名映射
表名映射
我们知道:如果是在默认情况下,使用EFCore Code First的方式生成的表名跟数据上下文类中定义的实体属性的名称是一致的,例如:
public DbSet<Blog> Bloges123 { get; set; }
这里定义的属性名称是Bloges123,那么最后数据库中生成的表名也叫Bloges123。看下面的测试。
我们首先添加迁移,每次迁移都会生成一个对应的迁移记录类,代码如下图所示:
可以看到,这里显示创建表的名称就是Bloges123。最后更新数据库,更新完成以后查看数据库生成的表名:
可以看到:数据库里面最终生成的表名就是配置的实体属性的命名。如果我们不想使用自动生成的表名,那该怎么办呢?这时候就需要做表名映射了,在代码里面设置最后生成的数据库表名。
如果要做映射,需要在数据上下文类中重写父类的OnModelCreating方法,里面有一个ToTable()的方法,里面的参数就是你想生成的表名,如下图所示:
修改后的数据上下文类代码如下:
using EFCore.Model; using Microsoft.EntityFrameworkCore; namespace EFCore.Data { /// <summary> /// 数据上下文 /// </summary> public class EFDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=EFTest;User ID=sa;Password=123456;"); } public DbSet<Blog> Blogs { get; set; } /// <summary> /// 重写OnModelCreating方法,配置映射 /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { // 配置表名映射 modelBuilder.Entity<Blog>().ToTable("Blog"); base.OnModelCreating(modelBuilder); } } }
这样设置完成以后,我们在次使用数据迁移的方式来生成数据库,看看最终结果。添加迁移以后生成的迁移记录类:
可以看到:迁移记录类里面显示生成的表名是我们自己配置的表名,然后更新数据库,查看数据库表名:
这样就完成了表名映射,最终生成的就是我们自己配置的表名。
注意:设置表名的时候有一个限制:表名最大长度限制为128。
我们修改代码,设置的表名长度超过128看看效果:
var tableName = string.Join("", Enumerable.Repeat("t", 250).ToArray()); modelBuilder.Entity<Blog>().ToTable(tableName);
使用迁移的方式生成数据库查看效果:
可以看到,在更新数据库的时候报错了,提示超过了最大长度。
到此这篇关于Entity Framework Core表名映射的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
MVC HtmlHelper扩展类(PagingHelper)实现分页功能
这篇文章主要为大家详细介绍了MVC HtmlHelper扩展,实现分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05Asp.Net Core中基于Session的身份验证的实现
这篇文章主要介绍了Asp.Net Core中基于Session的身份验证的实现2018-09-09.NET CORE中使用AutoMapper进行对象映射的方法
这篇文章主要给大家介绍了关于.NET CORE中使用AutoMapper进行对象映射的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.NET CORE具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-04-04asp.net的web页面(aspx)数据量过多时提交失败对策
asp.net的web页面,数据量过多时提交失败的情况想必有很多朋友都有遇到过吧,下面与大家分享下详细的解决方法2013-05-05.NET Core单文件发布静态编译AOT CoreRT的方法详解
这篇文章主要给大家介绍了关于.NET Core单文件发布静态编译AOT CoreRT的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-07-07
最新评论