Entity Framework
इकाई राज्य का प्रबंधन
खोज…
टिप्पणियों
एंटिटी फ्रेमवर्क में एंटिटीज में विभिन्न राज्य हो सकते हैं जो System.Data.Entity.EntityState एन्यूमरेशन द्वारा सूचीबद्ध हैं। ये राज्य हैं:
Added
Deleted
Detached
Modified
Unchanged
एंटिटी फ्रेमवर्क POCO के साथ काम करता है। इसका मतलब है कि इकाइयां सरल वर्ग हैं जिनके पास अपने राज्य का प्रबंधन करने के लिए कोई गुण और विधियां नहीं हैं। ObjectStateManager
में Entity state को एक संदर्भ द्वारा प्रबंधित किया जाता है।
यह विषय निकाय स्थिति सेट करने के विभिन्न तरीकों को शामिल करता है।
एकल इकाई का राज्य जोड़ा जाना
EntityState.Added
को दो पूरी तरह से समकक्ष तरीकों से सेट किया जा सकता है:
संदर्भ में इसकी प्रविष्टि की स्थिति सेट करके:
context.Entry(entity).State = EntityState.Added;
इसे संदर्भ के
DbSet
में जोड़कर:context.Entities.Add(entity);
SaveChanges
कॉल करते समय, इकाई को डेटाबेस में डाला जाएगा। जब इसे एक पहचान स्तंभ (एक ऑटो-सेट, ऑटो-इंक्रीमेंटिंग प्राथमिक कुंजी) मिल जाता है, तो SaveChanges
बाद, इकाई की प्राथमिक कुंजी संपत्ति में नया उत्पन्न मूल्य शामिल होगा, तब भी जब इस संपत्ति में पहले से ही एक मूल्य था ।
ऑब्जेक्ट ग्राफ़ के राज्य को जोड़ना
Added
ऑब्जेक्ट ग्राफ (संबंधित संस्थाओं का एक संग्रह) की स्थिति को एकल इकाई के रूप में Added
से अलग है ( इस उदाहरण को देखें)।
उदाहरण में, हम ग्रहों और उनके चंद्रमाओं को संग्रहीत करते हैं:
कक्षा मॉडल
public class Planet
{
public Planet()
{
Moons = new HashSet<Moon>();
}
public int ID { get; set; }
public string Name { get; set; }
public ICollection<Moon> Moons { get; set; }
}
public class Moon
{
public int ID { get; set; }
public int PlanetID { get; set; }
public string Name { get; set; }
}
प्रसंग
public class PlanetDb : DbContext
{
public property DbSet<Planet> Planets { get; set; }
}
हम ग्रहों और उनके चंद्रमाओं को जोड़ने के लिए इस संदर्भ का एक उदाहरण का उपयोग करते हैं:
उदाहरण
var mars = new Planet { Name = "Mars" };
mars.Moons.Add(new Moon { Name = "Phobos" });
mars.Moons.Add(new Moon { Name = "Deimos" });
context.Planets.Add(mars);
Console.WriteLine(context.Entry(mars).State);
Console.WriteLine(context.Entry(mars.Moons.First()).State);
आउटपुट:
Added
Added
क्या हम यहाँ देख कि एक जोड़ने है Planet
भी करने के लिए एक चंद्रमा की स्थिति सेट Added
।
जब किसी इकाई की स्थिति को Added
, तो उसके नेविगेशन गुणों में सभी इकाइयां (गुण जो अन्य संस्थाओं की तरह "नेविगेट" करते हैं, जैसे Planet.Moons
) को भी Added
, जब तक कि वे पहले से ही संदर्भ से जुड़े नहीं हैं ।