欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

Entity Framework Core表名映射

时间:2022-10-01 13:36:03|栏目:.NET代码|点击:

表名映射

我们知道:如果是在默认情况下,使用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);

使用迁移的方式生成数据库查看效果:

可以看到,在更新数据库的时候报错了,提示超过了最大长度。

上一篇:使用EF CORE迁移数据库

栏    目:.NET代码

下一篇:没有了

本文标题:Entity Framework Core表名映射

本文地址:http://www.codeinn.net/misctech/215182.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有