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

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

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

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

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

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

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)友評論