我使用一個約定(IStoreModelConvention),我需要知道如果AssociationType.IsForeignKey是真實的。目標是重新映射映射表中的所有外鍵。例如,刪除下劃線並組成從類和屬性名稱派生的全新名稱。實體框架Core 2中的AssociationType等效於什麼?
現在的問題是:在Entity Framework Core 2中是否存在與AssociationType.IsForeignKey的等價物,或者如何完成這種類型的自定義?
我使用一個約定(IStoreModelConvention),我需要知道如果AssociationType.IsForeignKey是真實的。目標是重新映射映射表中的所有外鍵。例如,刪除下劃線並組成從類和屬性名稱派生的全新名稱。實體框架Core 2中的AssociationType等效於什麼?
現在的問題是:在Entity Framework Core 2中是否存在與AssociationType.IsForeignKey的等價物,或者如何完成這種類型的自定義?
EF Core 2爲ForeignKeys提供了不同的(或更好的)命名系統。該名稱構建爲FK_Table_ReferencedTable_FKProperties
,其中表是定義FK約束的地方。 ReferencedTable是主要的一面。而FKProperties是_
分隔的外鍵屬性列表。也許它會匹配你想要的命名系統。
雖然如果您仍然想自定義外鍵屬性的名稱,那麼在ef內核中還沒有用戶定義的約定支持。但EF Core允許您遍歷模型元數據以按照您的需要進行配置。在派生的DbContext
的OnModelCreating
方法中,您可以根據需要輸入以下代碼來命名FK。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Configure model
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
foreach (var declaredForeignKey in entityType.GetDeclaredForeignKeys())
{
declaredForeignKey.Relational().Name = "<Construct_FK_Name>";
}
}
}
謝謝你,這聽起來很不錯。我會測試。 – gabomgp