मैं एक नेविगेशन संपत्ति के परिवर्तन का पता लगाने में परेशानी आ रही के परिवर्तन का पता लगाने नहीं होगा:इकाई की रूपरेखा नेविगेशन गुण
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Name { get; set; }
}
मैं बनाया है और सहेज कर रखा है:
मेरे परीक्षण मॉडल इस तरह दिखता है नाम और पता दोनों संपत्तियों के साथ व्यक्ति का एक प्रकार असाइन किया गया। मेरी समस्या यह है कि यदि मैं व्यक्ति ऑब्जेक्ट को डेटाबेस से वापस लाता हूं और मैं पता संपत्ति (उदा। शून्य तक) बदलता हूं तो ई.एफ. परिवर्तन का पता नहीं लगाता है!
using (var ctx = new EFContext())
{
Person p = ctx.People.First();
//p.Address IS NOT NULL!
p.Address = null;
var entry = ctx.Entry(p);
}
entry.State
अपरिवर्तित क्यों है: मेरे कोड है?
संपादित करें: अगर मैं SaveChanges को कॉल करता हूं, तो रिकॉर्ड सही ढंग से सहेजा जाता है (पता शून्य हो जाता है)!
संपादित करें 2: मैं विदेशी कुंजी संपत्ति बना लिया है के रूप में बिली सुझाव दिया और अगर मैं दृश्य स्टूडियो में व्यक्ति वस्तु का निरीक्षण राज्य संशोधित है .. अगर मैं वस्तु के मूल्यों का निरीक्षण डीबगर के साथ बंद नहीं करते राज्य अपरिवर्तित है!
संपादित करें 3: ctx.People का उपयोग करके व्यक्ति वस्तु लोड हो रहा है। शामिल करें (x => x.Address)। सबसे पहले(); समस्या हल करता है। क्या कॉल करने से बचने का कोई तरीका है और पता आईडी के बजाय पता संपत्ति को संशोधित करना जारी रखें?
यदि आप ctx.DetectChanges() को कॉल करते हैं तो क्या होता है? – Maarten
कुछ भी नहीं। नतीजा वही है!! – Mones