Entity Framework Core表名映射
表名映射
我們知道:如果是在默認(rèn)情況下,使用EFCore Code First的方式生成的表名跟數(shù)據(jù)上下文類中定義的實體屬性的名稱是一致的,例如:
public DbSet<Blog> Bloges123 { get; set; }這里定義的屬性名稱是Bloges123,那么最后數(shù)據(jù)庫中生成的表名也叫Bloges123??聪旅娴臏y試。
我們首先添加遷移,每次遷移都會生成一個對應(yīng)的遷移記錄類,代碼如下圖所示:

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

可以看到:數(shù)據(jù)庫里面最終生成的表名就是配置的實體屬性的命名。如果我們不想使用自動生成的表名,那該怎么辦呢?這時候就需要做表名映射了,在代碼里面設(shè)置最后生成的數(shù)據(jù)庫表名。
如果要做映射,需要在數(shù)據(jù)上下文類中重寫父類的OnModelCreating方法,里面有一個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è)置完成以后,我們在次使用數(shù)據(jù)遷移的方式來生成數(shù)據(jù)庫,看看最終結(jié)果。添加遷移以后生成的遷移記錄類:

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

這樣就完成了表名映射,最終生成的就是我們自己配置的表名。
注意:設(shè)置表名的時候有一個限制:表名最大長度限制為128。
我們修改代碼,設(shè)置的表名長度超過128看看效果:
var tableName = string.Join("", Enumerable.Repeat("t", 250).ToArray());
modelBuilder.Entity<Blog>().ToTable(tableName);使用遷移的方式生成數(shù)據(jù)庫查看效果:

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

