6

Nesnenin her bir özelliğini açıkça ayarlamak zorunda kalmadan aşağıdaki gibi (çalışmayan) bir şey yapabilir miyim? Ürün, bir form gönderiminden varsayılan model bağlayıcı tarafından oluşturulan nesnedir ve ProductInDb, geçersiz kılmak/güncellemek istediğim bağlam/veritabanında nesnedir. ProductID birincil anahtarı her ikisinde de aynıdır.Varolan nesneyi Varlık FrameWork ile kaydetme/güncelleştirme yapma ve her özelliği tek tek ayarlamak zorunda değilsiniz

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID); 

        ProductInDb = product; 

        context.SaveChanges(); 

cevap

13

Varolan product takmak ve Modified olarak devlet ayarlayabilirsiniz.

siz "Entry" için bir tanım içermez ObjectContext

context.Products.Attach(product); 
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

context.SaveChanges(); 
+0

için DbContext API

context.Products.Attach(product); context.Entry(product).State = EntityState.Modified; context.SaveChanges(); 

kullanıyorsanız. Bir şeye başvurmam gerekiyor mu? Zaten System.Data.Objects kullanarak; Başka ? Ctrl + tuşlarına basın. Giriş için hiçbir şey vermez. – LaserBeak

+0

@LaserBeak 'ObjectContext' kullanıyorsunuz gibi görünüyor. Güncellenmiş cevabımı görün. – Eranga

+0

@Eranga lütfen şu soruya bakın: http://stackoverflow.com/questions/16085654/pk-violation-while-updating-via-ef/16086406?noredirect=1#16086406 –

İlgili konular