संयुक्त नई और संशोधित अलग पीओसीओ इकाइयों को बचाने के लिए उचित और तेज़ तरीका क्या है?इकाई फ्रेमवर्क में संयुक्त (नई + संशोधित) अलग-अलग इकाइयों को कैसे सहेजना है?
मैं इन तरीकों के बारे में सोच रहा था:
private void Method_2(IList<Entity> entities) //detached entities
{
//This method is using SELECT to check if entity exist
using (var context = new ModelContainer())
{
foreach (Entity entity in entities)
{
var foundEntity = context.CreateObjectSet<Entity>().SingleOrDefault(t => t.Id == entity.Id);
context.Detach(foundEntity); //Remove it from ObjectStateManager
if (foundEntity != null)//It is modified entity
{
context.AttachTo("EntitySet", entity); //Attach our entity
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified); //We know it exists
}
else//It is new entity
{
context.CreateObjectSet<Entity>().AddObject(entity);
}
}
context.SaveChanges();
}
}
private void Method_1(IList<Entity> entities) //detached entities
{
//This method doesn't select anything from DB, but i have ta call Savechanges after each object
using (var context = new ModelContainer())
{
foreach (Entity entity in entities)
{
try
{
context.AttachTo("EntitySet", entity);
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
context.SaveChanges();
}
catch (OptimisticConcurrencyException)
{
context.ObjectStateManager.ChangeObjectState(entity, EntityState.Added);
context.SaveChanges();
}
}
}
}
जब आप अलग वातावरण में काम कर रहे हैं आप को पता है जो इकाई जोड़ दिया गया है और जो संशोधित किया गया है - यह इस जानकारी रखने के लिए और प्रदान करने के लिए आपकी जिम्मेदारी है ऑब्जेक्ट कॉन्टेक्स्ट पर।
वैसे मैं इस कथन से सहमत हूं कि अगर आपको ईएफ में इस तरह के ईएफ कोड का उपयोग करने की ज़रूरत है तो आपको स्थिति में खुद को कुछ निश्चित रूप से गलत लगता है। मैंने इस नौकरी के लिए गलत उपकरण चुना है।
डब्ल्यूसीएफ के माध्यम से डीबी को सिंक करने के लिए इकाई फ्रेमवर्क का उपयोग करना एक बुरा विचार था, यह बहुत धीमा काम करता है, मैं कस्टम लाइटवेट शुद्ध एडीओ .NET डेटा एक्सेस लेयर के साथ डीटीओ का उपयोग कर समाप्त हुआ। –