2015-12-09 34 views
2

我們正在使用新的實體框架7的ASP.NET 5的RC1版本,我希望在數據庫中的表名前面加上名稱前綴模型所在的命名空間。使用實體框架7(rc1)的全局表前綴

我知道如何在以前版本的實體框架中做到這一點(感謝this SO question),但我無法弄清楚如何在新版本中做同樣的事情。我瀏覽了文檔,Google搜索並在源代碼中戳了我的頭,但無濟於事。

我做EF6:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Types().Configure(entity => entity.ToTable($"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s")); 

    base.OnModelCreating(modelBuilder); 
} 

我怎樣才能做到與EF7一樣嗎?這可能還不在其中嗎?

回答

3

做它在OnModelCreating年底通過直接操作模式:

foreach (var entity in modelBuilder.Model.GetEntityTypes()) 
{ 
    entity.Relational().TableName = 
     $"{entity.ClrType.Namespace?.Replace('.', '-')}_{entity.ClrType.Name}s"; 
} 
+0

真棒,這完美的作品。從Idenity也更改表名,但我想這只是在該循環中更改一件容易的事。謝謝! –

2

截至今日,DIC,9日,2015年,EF7習俗慣例的問題仍然是開放的:

https://github.com/aspnet/EntityFramework/issues/214

如果您訪問該鏈接,你可以深入到更多的細節。

+0

是的,我明白了。那麼我想我們可以通過在類之上使用'[Table(「Namespace_Foo」)]'屬性來手工完成它,至少暫時是這樣。 –