मैं एक इकाई (मैं पहली बार कोड का उपयोग कर रहा) है कि उस तरह दिखता है:इकाई की रूपरेखा लिंक्ड सूची
public class Node
{
public int ID { get; set; }
public string SomeInfo { get; set; }
public virtual Node Previous { get; set; }
public virtual Node Next { get; set; }
}
उदाहरण के लिए अगले नोड को बचाने के लिए कोई समस्या नहीं है। हालांकि अगर पिछली आईडी 1 है और मैं अगला नोड सेट करने की कोशिश करता हूं (जो आईडी = 1 के साथ है) 2 तक यह अपवाद फेंक दिया गया है।
ऑब्जेक्ट संदर्भ में ऑब्जेक्ट को जोड़ा नहीं जा सकता है। ऑब्जेक्ट्स EntityKey में ऑब्जेक्टस्टेट एंटर्री है जो इंगित करता है कि ऑब्जेक्ट पहले से ही एक अलग रिश्ते में भाग ले रहा है।
मैं इस तरह नोड बचत कर रहा हूँ:
public virtual void Update(T entity)
{
this.context.Entry(GetSingle(entity.ID)).State = EntityState.Detached;
this.context.Entry(entity).State = EntityState.Added;
this.context.Entry(entity).State = EntityState.Modified;
this.Save();
}
और GetSingle इस तरह::
int nextId;
int previousId;
if (int.TryParse(Request["previous"], out previousId))
node.Previous = this.nodeRepository.GetSingle(previousId);
if (int.TryParse(Request["next"], out nextId))
node.Next = this.nodeRepository.GetSingle(nextId);
this.nodeRepository.Update(node);
अद्यतन इस तरह दिखता है
public virtual T GetSingle(object id)
{
var query = this.entities.Find(id);
return query;
}
UPDATE 1
अपवाद के साथ लाइन अद्यतन विधि में है:
this.context.Entry(entity).State = EntityState.Modified;
मुझे विश्वास है कि समस्या एक-से-एक रिश्ता। एफई में है केवल इस मामले में प्राथमिक कुंजी संघों साझा करने का समर्थन मूल रूप से जिसका अर्थ है कि 'Node.ID = 1' तो' नोड .PREvious.ID' और 'Node.Next.ID' भी' 1' होना चाहिए। कोई अन्य मूल्य संभव नहीं है। आप नोड से केवल एक लूप बना सकते हैं, इसलिए बोलने के लिए। आपको कौन सी रेखा बिल्कुल मिलती है अपवाद? और कौन से मूल्य हैं जब आप अपवाद प्राप्त करते हैं तो 'node.ID',' पिछला आईडी 'और' nextId' '? – Slauma
असल में यह समस्या प्रतीत नहीं होती है। परिदृश्य इस तरह है: node.id = 2; node.previous.id = 1. अब मैं node.id = 1 पर जाता हूं और node.next.id = 2 सेट करने का प्रयास करता हूं - केवल तभी अपवाद फेंक दिया जाता है। – Unknown
क्या आपके पास फ्लुएंट एपीआई (या डेटा एनोटेशन) के साथ कोई मैपिंग है? मेरे लिए मॉडल नहीं बनाया जा सकता है, मुझे "एसोसिएशन के प्रिंसिपल एंड को निर्धारित करने में असमर्थ" अपवाद मिलता है। आप किस ईएफ संस्करण का उपयोग कर रहे हैं? – Slauma