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

Entity Framework Core表名映射

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

表名映射

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

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

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

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

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

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

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

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

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>
        /// 重寫(xiě)OnModelCreating方法,配置映射
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // 配置表名映射
            modelBuilder.Entity<Blog>().ToTable("Blog");
            base.OnModelCreating(modelBuilder);
        }

    }
}

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

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

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

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論