我有必須映射到列在現有的數據庫中有兩個簡單的表:一到實體框架多對多關係6
public class StockItem
{
public System.Guid pkStockItemID { get; set; }
public virtual List<StockItem_ExtendedProperties> ExtendedProperties { get; set; }
}
public class StockItem_ExtendedProperties
{
public System.Guid pkStockItem_ExtendedPropertiesID { get; set; }
public System.Guid fkStockItemId { get; set; }
public virtual StockItem StockItem { get; set; }
}
以下是配置類兩種:
public StockItemConfiguration()
{
this.HasMany(item => item.ExtendedProperties)
.WithRequired(property => property.StockItem)
.HasForeignKey(property => property.fkStockItemId)
.WillCascadeOnDelete();
}
public StockItem_ExtendedPropertiesConfiguration()
{
this.HasRequired(property => property.StockItem)
.WithMany(item => item.ExtendedProperties)
.HasForeignKey(property => property.fkStockItemId)
.WillCascadeOnDelete();
}
這導致錯誤:The item with identity 'StockItem_ExtendedProperties' already exists in the metadata collection. Parameter name: item
。
似乎是從表的兩邊定義關係導致錯誤。但是,從任一側移除配置仍會導致相同的錯誤。
除了如何解決上述問題之外,我想知道原因是什麼以及應該配置這種關係中的哪個表。謝謝。
我試過你的代碼,它工作正常。它只是要求我在:configuration HasKey(k => k.pkStockItemID)中定義主鍵; – Raphael
@Raphael:問題原來完全不同。出於某種原因,名稱爲'StockItem_ExtendedProperties'的下劃線因EF而跳閘。刪除,使其工作。我正在使用EF 6.0.0.0,並想知道它是否是一個錯誤或是否不允許下劃線。 –