मैं नॉर्थविंड डेटाबेस का उपयोग इस पोस्ट के लिए एक उदाहरण के रूप में कर रहा हूं जहां मुझे अलग-अलग इकाइयों को इकाई ढांचे का उपयोग करके डेटाबेस में वापस सहेजने में समस्या आ रही है।इकाई फ्रेमवर्क - अलग राज्य में संबंधित वस्तुओं में परिवर्तन सहेजना
मैं निम्नलिखित दो तरीकों मुझे प्रदेशों और क्षेत्रों प्राप्त करने के लिए:
static List<Region> GetRegions()
{
using (NorthwindEntities entities = new NorthwindEntities())
{
entities.Region.MergeOption = System.Data.Objects.MergeOption.NoTracking;
return entities.Region.ToList();
}
}
static List<Territories> GetTerritories()
{
using (NorthwindEntities entities = new NorthwindEntities())
{
entities.Territories.MergeOption = System.Data.Objects.MergeOption.NoTracking;
return entities.Territories.ToList();
}
}
इन विधियों दोनों काम ठीक है और मुझे वस्तुओं मैं अलग राज्य में आवश्यकता के संग्रह मिलता है।
मैं भी एक स्थिर विधि, जो दोनों एक पुरानी इकाई और वर्तमान में उसे संपादित इकाई में ले जाता है SaveEntity कहा जाता है इस प्रकार है के रूप में:
static void SaveEntity(EntityObject oldEntity, EntityObject newEntity)
{
using (NorthwindEntities entities = new NorthwindEntities())
{
entities.Attach(oldEntity);
entities.ApplyPropertyChanges(newEntity.EntityKey.EntitySetName, newEntity);
entities.SaveChanges();
}
}
इस विधि आंशिक रूप से काम करता है जहां किसी चीज़ के लिए बदलाव सहेजे गए हैं डेटाबेस के नीचे, लेकिन संबंधित वस्तुओं के संबंध में कोई भी परिवर्तन सहेजा नहीं जाता है।
मैं निम्नलिखित कोड मेरे उदाहरण के रूप में उपरोक्त विधि बुला है
List<Territories> territories = GetTerritories();
List<Region> regions = GetRegions();
Region region = regions.Where(n => n.RegionID == 2).FirstOrDefault();
Territories oldTerritory = territories.Where(n => n.TerritoryID == "01581").FirstOrDefault();
Territories newTerritory = ObjectCopier.Clone<Territories>(oldTerritory);
newTerritory.TerritoryDescription = "Hello World";
newTerritory.Region = region;
SaveEntity(oldTerritory, newTerritory);
TerritoryDescription करने के लिए परिवर्तन सफलतापूर्वक सहेजा जाता है, लेकिन क्षेत्र के लिए परिवर्तन नहीं है, डेटाबेस में यह अभी भी रूप में regionId = 1 रहता है RegionID = 2 के बजाय।
क्या कोई मुझे कुछ अंतर्दृष्टि प्रदान कर सकता है कि क्यों लागूप्रॉपर्टी चेंज संबंधित वस्तुओं में परिवर्तन का प्रचार नहीं करता है?
इसके अलावा, क्या किसी को पता है कि मैं इस समस्या के आसपास कैसे हो सकता हूं?