Mam dwie proste tabele, które mają do mapowania kolumn w istniejącej bazie danych:jeden do wielu relacji w Entity Framework 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; }
}
Obserwuje są klasy konfiguracyjne dla obu:
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();
}
ten powoduje błąd: The item with identity 'StockItem_ExtendedProperties' already exists in the metadata collection. Parameter name: item
.
Wydaje się, że zdefiniowanie relacji z obu stron stołu jest przyczyną błędu. Jednak usunięcie konfiguracji z dowolnej strony nadal powoduje ten sam błąd.
Poza jak rozwiązać powyższe, chciałbym wiedzieć, co jest przyczyną, a która z dwóch tabel w taki związek powinien być skonfigurowany. Dzięki.
Próbowałem twój kod i działa dobrze. po prostu poprosił mnie o zdefiniowanie kluczy podstawowych w: konfiguracji HasKey (k => k.pkStockItemID); – Raphael
@Raphael: Problem okazał się zupełnie inny. Podkreślenie w nazwie 'StockItem_ExtendedProperties' spowodowało z jakiegoś powodu potknięcie EF. Usunięcie go sprawia, że działa. Używam EF 6.0.0.0 i zastanawiam się, czy jest to błąd, czy też podkreślenia są niedozwolone. –