मैं समाधान पता लगाना: जब मैं एक अद्यतन करने के लिए कोशिशमैं ईएफ सीएफ में एक इकाई ऑब्जेक्ट (डिटेच) कैसे अपडेट कर सकता हूं?
MyEntity tmp = ctx.Entities.Where<MyEntity>(t => t.Id == objectWithNewValues.Id).SingleOrDefault();
if (tmp != null)
{
var entityInDb = ctx.Entry(tmp);
entityInDb.CurrentValues.SetValues(objectWithNewValues);
ctx.SaveChanges();
}
else
{
throw new ArgumentException ...
}
इससे पहले कि मैं EF4 इस्तेमाल किया, स्कीमा से कोड उत्पन्न संदर्भ एक विधि "context.ApplyCurrentValue (इकाई)"
होगा वस्तु को अलग, मैं कर सकते हैं:
void UpdateObject(Entity e)
{
Entity tmp = ctx.Entities.Where(t=>t.id ==e.id);
ctx.ApplyCurrentValue(e);
ctx.SaveChannges();
}
अब मैं एक परियोजना EF4 कोड पहले दृष्टिकोण का उपयोग किया है और मैं अब और नहीं मिल सकता है "ApplyCurrentValue" विधि।
तो मैं अद्यतन कार्रवाई कैसे कर सकता हूं?
इकाई वर्ग एक बहुत ही सरल वर्ग
public class MyEntity
{
[Key]
public Guid Id {get;set;}
...
}
मेरी संदर्भ एक भी एक बहुत ही सरल वर्ग inherte DBContext
public MyContext : DBContext
{
public DBSet<MyEntity> Entities {get;set}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
modelBuilder.Entity<MyEntity>().ToTable("tblMyEntity");
}
}
और मुझे नीचे के रूप में कुछ करने के लिए कोशिश कर रहा हूँ है। लेकिन मान डेटाबेस में अद्यतन नहीं मिला था!
ctx.entities.Attach(entity);
var entityInDb = ctx.Entry(entity);
entityInDb.CurrentValues.SetValues(entity);
context.SaveChanges();
मैं अद्यतन कैसे कर सकता हूं?
करने के लिए अपने अद्यतन पद्धति को बदलने मैं स्वयं ट्रैकिंग संस्थाओं उपयोग नहीं कर रहा .... हममम .... लेकिन ApplyChanges विधि संदर्भ से आना चाहिए .. इससे कोई फर्क चाहिए इकाई किस तरह हम कर रहे हैं उपयोग कर रहे हैं ... आप किस प्रकार का conext उपयोग कर रहे हैं? – jojo
हम्म, मैंने कुछ खुदाई की और "ApplyChanges" विधि एक विस्तार विधि है जो स्व-ट्रैकिंग इकाइयों टेम्पलेट के साथ आता है। यह अद्यतन के दौरान इकाई के "ट्रैकिंग" को संभालता है। तब माफ़ी, मैं थोड़ा और खोदना होगा। – tobias86
लगता है कि मैं अगली बार "स्व-ट्रैकिंग इकाई" का बेहतर उपयोग करता हूं ... – jojo