Entity Framework Core表名映射
表名映射
我們知道:如果是在默認(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í)有所幫助,也希望大家多多支持腳本之家。
- Entity?Framework?Core種子數(shù)據(jù)Data-Seeding
- Entity?Framework?Core生成數(shù)據(jù)庫表
- 對(duì)Entity?Framework?Core進(jìn)行單元測試
- Entity?Framework?Core實(shí)現(xiàn)Like查詢?cè)斀?/a>
- Entity Framework Core中執(zhí)行SQL語句和存儲(chǔ)過程的方法介紹
- Entity Framework Core批處理SQL語句
- Entity Framework Core實(shí)現(xiàn)軟刪除與查詢過濾器
- Entity Framework Core生成列并跟蹤列記錄
- Entity?Framework?Core關(guān)聯(lián)刪除
相關(guān)文章
MVC HtmlHelper擴(kuò)展類(PagingHelper)實(shí)現(xiàn)分頁功能
這篇文章主要為大家詳細(xì)介紹了MVC HtmlHelper擴(kuò)展,實(shí)現(xiàn)分頁功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Entity?Framework?Core生成數(shù)據(jù)庫表
這篇文章介紹了Entity?Framework?Core生成數(shù)據(jù)庫表的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03Asp.Net Core中基于Session的身份驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了Asp.Net Core中基于Session的身份驗(yàn)證的實(shí)現(xiàn)2018-09-09.NET CORE中使用AutoMapper進(jìn)行對(duì)象映射的方法
這篇文章主要給大家介紹了關(guān)于.NET CORE中使用AutoMapper進(jìn)行對(duì)象映射的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET CORE具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Asp.net動(dòng)態(tài)生成html頁面的方法分享
這篇文章介紹了Asp.net動(dòng)態(tài)生成html頁面的方法,有需要的朋友可以參考一下2013-10-10asp.net的web頁面(aspx)數(shù)據(jù)量過多時(shí)提交失敗對(duì)策
asp.net的web頁面,數(shù)據(jù)量過多時(shí)提交失敗的情況想必有很多朋友都有遇到過吧,下面與大家分享下詳細(xì)的解決方法2013-05-05.NET Core單文件發(fā)布靜態(tài)編譯AOT CoreRT的方法詳解
這篇文章主要給大家介紹了關(guān)于.NET Core單文件發(fā)布靜態(tài)編譯AOT CoreRT的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07