欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Entity Framework Core表名映射

 更新時(shí)間:2022年03月25日 10:24:20   作者:.NET開發(fā)菜鳥  
這篇文章介紹了Entity Framework Core實(shí)現(xiàn)表名映射的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

表名映射

我們知道:如果是在默認(rèn)情況下,使用EFCore Code First的方式生成的表名跟數(shù)據(jù)上下文類中定義的實(shí)體屬性的名稱是一致的,例如:

public DbSet<Blog> Bloges123 { get; set; }

這里定義的屬性名稱是Bloges123,那么最后數(shù)據(jù)庫中生成的表名也叫Bloges123??聪旅娴臏y試。

我們首先添加遷移,每次遷移都會(huì)生成一個(gè)對(duì)應(yīng)的遷移記錄類,代碼如下圖所示:

可以看到,這里顯示創(chuàng)建表的名稱就是Bloges123。最后更新數(shù)據(jù)庫,更新完成以后查看數(shù)據(jù)庫生成的表名:

可以看到:數(shù)據(jù)庫里面最終生成的表名就是配置的實(shí)體屬性的命名。如果我們不想使用自動(dòng)生成的表名,那該怎么辦呢?這時(shí)候就需要做表名映射了,在代碼里面設(shè)置最后生成的數(shù)據(jù)庫表名。

如果要做映射,需要在數(shù)據(jù)上下文類中重寫父類的OnModelCreating方法,里面有一個(gè)ToTable()的方法,里面的參數(shù)就是你想生成的表名,如下圖所示:

修改后的數(shù)據(jù)上下文類代碼如下:

using EFCore.Model;
using Microsoft.EntityFrameworkCore;

namespace EFCore.Data
{
    /// <summary>
    /// 數(shù)據(jù)上下文
    /// </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);
        }

    }
}

這樣設(shè)置完成以后,我們?cè)诖问褂脭?shù)據(jù)遷移的方式來生成數(shù)據(jù)庫,看看最終結(jié)果。添加遷移以后生成的遷移記錄類:

可以看到:遷移記錄類里面顯示生成的表名是我們自己配置的表名,然后更新數(shù)據(jù)庫,查看數(shù)據(jù)庫表名:

這樣就完成了表名映射,最終生成的就是我們自己配置的表名。

注意:設(shè)置表名的時(shí)候有一個(gè)限制:表名最大長度限制為128。

我們修改代碼,設(shè)置的表名長度超過128看看效果:

var tableName = string.Join("", Enumerable.Repeat("t", 250).ToArray());
modelBuilder.Entity<Blog>().ToTable(tableName);

使用遷移的方式生成數(shù)據(jù)庫查看效果:

可以看到,在更新數(shù)據(jù)庫的時(shí)候報(bào)錯(cuò)了,提示超過了最大長度。

到此這篇關(guān)于Entity Framework Core表名映射的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論