Entity Framework Core表名映射
表名映射
我們知道:如果是在默認(rèn)情況下,使用EFCore Code First的方式生成的表名跟數(shù)據(jù)上下文類中定義的實(shí)體屬性的名稱是一致的,例如:
public DbSet<Blog> Bloges123 { get; set; }這里定義的屬性名稱是Bloges123,那么最后數(shù)據(jù)庫中生成的表名也叫Bloges123。看下面的測試。
我們首先添加遷移,每次遷移都會(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è)置完成以后,我們在次使用數(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查詢詳解
- 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)文章
基于asp.net實(shí)現(xiàn)圖片在線上傳并在線裁剪功能
本文主要介紹了基于asp.net實(shí)現(xiàn)圖片在線上傳并在線裁剪功能的具體事例代碼,具有一定的參考價(jià)值。需要的朋友可以參考下2016-12-12
vb 中的MD5加密在asp.net中的實(shí)現(xiàn)
給定標(biāo)識(shí)哈希類型的密碼和字符串,該例程產(chǎn)生一個(gè)適合存儲(chǔ)在配置文件中的哈希密碼,感興趣的朋友可以參考下本文2013-04-04
使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程
IIS Express是一個(gè)Mini版的IIS,能夠支持所有的Web開發(fā)任務(wù),本篇經(jīng)驗(yàn)將和大家介紹使用自定義主機(jī)名來訪問運(yùn)行在IIS?Express上的站點(diǎn)程序的方法,希望對(duì)大家的工作和學(xué)習(xí)有所幫助2023-06-06
ASP.NET MVC實(shí)現(xiàn)依賴注入的完整過程
這篇文章主要給大家介紹了關(guān)于ASP.NET MVC實(shí)現(xiàn)依賴注入的完整過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
.Net?Core應(yīng)用增強(qiáng)型跨平臺(tái)串口類庫CustomSerialPort()詳解
本文詳細(xì)講解了.Net?Core應(yīng)用增強(qiáng)型跨平臺(tái)串口類庫CustomSerialPort(),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
Asp.net+jquery+.ashx文件實(shí)現(xiàn)分頁思路
分頁思路: .ashx程序中,編寫好取得不同頁碼的程序。在頁面布局好的前提下,留下數(shù)據(jù)區(qū)域 div。然后在頁面請(qǐng)求 .ashx程序生成下一頁的html代碼。覆蓋div.innerHTMl2013-03-03
gridview中實(shí)現(xiàn)radiobutton的單選示例
radiobutton可以單選,于是想讓gridview也可以實(shí)現(xiàn),具體的思路及代碼如下,感興趣的朋友可以參考下2013-08-08

