本文翻譯自《Entity Framework Core: Naming Convention》,由于水平有限,故無(wú)法保證翻譯完全正確,歡迎指出錯(cuò)誤。謝謝!

注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版發(fā)布時(shí),功能可能存在變動(dòng)。

Entity Framework 遷移允許從模型生成數(shù)據(jù)庫(kù),這意味著必須從類名和屬性名生成數(shù)據(jù)庫(kù)對(duì)象的名稱。對(duì)于大多數(shù)人來(lái)說(shuō)使用默認(rèn)名稱是沒(méi)有問(wèn)題的,但是,您的DBA可能會(huì)要求您使用特定的命名約定。例如,一些DBA希望表名大寫(xiě),或者列名使用表名為前綴。

Entity Framework 允許逐個(gè)設(shè)置表名或列名:

protected override void OnModelCreating(ModelBuilder modelBuilder){
    modelBuilder.Entity<Blog>().ForSqlServerToTable("Blog");
}

但是,寫(xiě)這些代碼非常無(wú)聊并且容易出錯(cuò),不應(yīng)該逐個(gè)設(shè)置對(duì)像的名稱,您可以通過(guò)修改模型實(shí)現(xiàn)全局設(shè)置。事實(shí)上modelBuilder是可讀寫(xiě)的,您可以迭代所有對(duì)象并更改其名稱。

public class BloggingContext : DbContext{    public DbSet<Blog> Blogs { get; set; }    public DbSet<Post> Posts { get; set; }    protected override void OnModelCreating(ModelBuilder modelBuilder)    {        base.OnModelCreating(modelBuilder);        // Singularize table name
        // Blogs => Blog
        foreach (var entityType in modelBuilder.Model.GetEntityTypes())
        {            // Add NuGet package&n
        
		

網(wǎng)友評(píng)論