2013-11-22 8 views
5

मैं दो सरल टेबल एक मौजूदा डेटाबेस में स्तंभों को मैप करने के लिए है कि है:एक इकाई की रूपरेखा में कई रिश्ते को 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

ऐसा प्रतीत होता है कि तालिका के दोनों किनारों से संबंधों को परिभाषित करने से त्रुटि उत्पन्न हो रही है। हालांकि, किसी भी तरफ से कॉन्फ़िगरेशन को हटाने से भी वही त्रुटि होती है।

उपरोक्त को ठीक करने के तरीके के अलावा, मैं जानना चाहता हूं कि कारण क्या है और इस तरह के रिश्ते में दो तालिकाओं को किस कॉन्फ़िगर किया जाना चाहिए। धन्यवाद।

+0

का उपयोग करके मैंने आपके कोड की कोशिश की है और यह ठीक काम करता है। यह सिर्फ मुझे प्राथमिक कुंजी को परिभाषित करने के लिए कहा: कॉन्फ़िगरेशन हैस्की (k => k.pkStockItemID); – Raphael

+0

@ राफेल: समस्या पूरी तरह से अलग हो गई। 'StockItem_ExtendedProperties' नाम में अंडरस्कोर कुछ कारणों से ईएफ को ट्रिप कर रहा था। इसे हटाने से यह काम करता है। मैं ईएफ 6.0.0.0 का उपयोग कर रहा हूं और आश्चर्य करता हूं कि यह एक बग है या क्या अंडरस्कोर की अनुमति नहीं है। –

उत्तर

8

समस्या को बाहर निकालना इकाई नाम StockItem_ExtendedProperties में अंडरस्कोर था। उस त्रुटि को छुटकारा पाने से हटा दिया गया। ईएफ 6.0.0.0 का उपयोग करना जो NuGet के माध्यम से नवीनतम उपलब्ध संस्करण था।

+0

मेरी समस्या भी तय की गई। आपको लगता है कि वे पहले से ही –

+0

को ठीक करेंगे, आपने इसे कैसे समझ लिया? इसने मेरी समस्या को भी ठीक किया, यह विचित्र है हालांकि – andryuha

+0

मुझे भी मदद मिली, शायद एक मैपिंग है जो एक ही नाम का उपयोग करती है, इसलिए आपका डीबीसेट ऑब्जेक्ट नाम समान नहीं हो सकता है ?? – Evan

5

मुझे यह भी बिल्कुल समस्या है। 'Paquete_PartNumber' नाम की एक कक्षा एक ही त्रुटि फेंकता है। अंडरस्कोर को हटाने से समस्या हल हो जाती है।

ईएफ 6.0.1 का उपयोग करना।

1

अंडरस्कोर को हटाने से मेरी समस्या भी हल हो गई। हालांकि असली मुद्दा नामकरण सम्मेलन था।

संबंध के एक तरफ नेविगेशन संग्रह संपत्ति का नाम बदल रहा डेटाबेस

0

मैं अंडरस्कोर को दूर करने की कोशिश की लेकिन यह मेरे लिए काम नहीं किया में तालिका नाम बदलने के लिए बिना समस्या हल हो। यह पता चला कि मेरे मामले में बहुवचन (+ एस) में एक (मॉडल) वर्ग को परिभाषित करने से इसे गड़बड़ कर दिया गया है। इसे हटाने के बाद यह फिर से काम किया। बहुत अजीब लेकिन यह हल हो गया।

ईएफ 6.0.0.0

संबंधित मुद्दे