मैं दो सरल टेबल एक मौजूदा डेटाबेस में स्तंभों को मैप करने के लिए है कि है:एक इकाई की रूपरेखा में कई रिश्ते को 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
।
ऐसा प्रतीत होता है कि तालिका के दोनों किनारों से संबंधों को परिभाषित करने से त्रुटि उत्पन्न हो रही है। हालांकि, किसी भी तरफ से कॉन्फ़िगरेशन को हटाने से भी वही त्रुटि होती है।
उपरोक्त को ठीक करने के तरीके के अलावा, मैं जानना चाहता हूं कि कारण क्या है और इस तरह के रिश्ते में दो तालिकाओं को किस कॉन्फ़िगर किया जाना चाहिए। धन्यवाद।
का उपयोग करके मैंने आपके कोड की कोशिश की है और यह ठीक काम करता है। यह सिर्फ मुझे प्राथमिक कुंजी को परिभाषित करने के लिए कहा: कॉन्फ़िगरेशन हैस्की (k => k.pkStockItemID); – Raphael
@ राफेल: समस्या पूरी तरह से अलग हो गई। 'StockItem_ExtendedProperties' नाम में अंडरस्कोर कुछ कारणों से ईएफ को ट्रिप कर रहा था। इसे हटाने से यह काम करता है। मैं ईएफ 6.0.0.0 का उपयोग कर रहा हूं और आश्चर्य करता हूं कि यह एक बग है या क्या अंडरस्कोर की अनुमति नहीं है। –