यह त्रुटि बहुत फेंक दी गई है, लेकिन मुझे समाधान नहीं मिल रहा है। मैं एंटिटी फ्रेमवर्क में नया हूं और अपने पहले दृष्टिकोण में मुझे यह त्रुटि मिली है।सी # इकाई फ्रेमवर्क "एक इकाई ऑब्जेक्ट को IEntityChangeTracker के कई उदाहरणों से संदर्भित नहीं किया जा सकता है"
यह मेरे पास है। मेरे पास एक कंपनी वर्ग और शाखा वर्ग है। दोनों वर्गों का अपना भंडार है। एक कंपनी की एक शाखा है, जबकि एक शाखा में कई कंपनियां हो सकती हैं।
मेरी जीयूआई में मैं शाखा वस्तुओं, जो मैं अपने BranchRepository से प्राप्त के साथ एक कॉम्बो भरने:
public IList<Branch> GetAllBranches()
{
var query = _context.Branches;
IList<Branch> branches = query.ToList();
return branches;
}
यह वह जगह है परिणाम शाखा बता गया की डेटा स्रोत है।
जब मैं कंपनी को बचाने के लिए चाहते हैं, तो मैं कुछ इस तरह करते हैं:
company.VisitorAddress = txtVisitAddress.Text;
company.City = txtCity.Text;
company.CompanyName = txtCompany.Text;
company.PhoneNumber = txtPhoneNumber.Text;
company.ZipCode = txtZipcode.Text;
company.Branch = ((Branch)cmbBranches.SelectedItem);
company.Website = txtWebsite.Text;
फिर, मैं अपनी कंपनी अपनी कंपनी को बचाने के लिए भंडार कहते हैं।
public bool Save(Company company)
{
_context.AddToCompanies(company); // <-- This is where the error is thrown.
_context.SaveChanges();
return true;
}
जब बचाने विधि शुरू हो जाती है, मैं 'एक इकाई वस्तु IEntityChangeTracker के कई उदाहरण द्वारा संदर्भित नहीं किया जा सकता' त्रुटि मिलती है: यहाँ क्या विधि को बचाने लग रहा है की तरह है।
स्पष्ट रूप से मैं कुछ गलत कर रहा हूं, लेकिन क्या?
हां, प्रत्येक संग्रह में इसका अपना 'ऑब्जेक्ट कॉन्टेक्स्ट' है। तो मैं एक साफ तरीके से 'ऑब्जेक्ट कॉन्टेक्स्ट' साझा कैसे कर सकता हूं? एक सिंगलटन का एक अच्छा तरीका उपयोग कर रहा है? – Martijn
कोई सिंगलटन अच्छा नहीं है - मेरा जवाब यहां देखें: http://stackoverflow.com/questions/3653009/entity-framework-and-connection-pooling/3653392#3653392 जाने का तरीका ऑब्जेक्ट कॉन्टेक्स्ट उदाहरण को रिपोजिटरी में पास कर सकता है कन्स्ट्रक्टर लेकिन फिर आपको SaveChanges को भंडार के बाहर संभालना होगा। –
मैं Winforms का उपयोग कर रहा हूँ। लेकिन मुझे नहीं लगता कि 'ऑब्जेक्ट कॉन्टेक्स्ट' को कैसे साझा किया जाए। मैं नहीं चाहता कि ग्राहक इस संदर्भ से अवगत रहें। – Martijn