7

Öznitelik Çerçevesini, Özdeğer Varlığı T4 şablonlarıyla kullanıyorum. Bu, varsayılan olarak bir UPDATE ifadesindeki Varlıktaki tüm özellikleri ayarlayan bir SQL Sorgusu oluşturacaktır. Sadece değiştirilen özellikleri içeren bir UPDATE ifadesi istiyorum.Entity Framework'ü yalnızca oluşturulan SQL'de değiştirilen Özellikleri güncellemek için nasıl alabilirim?

OriginalValueMembers originalValueMembers = new OriginalValueMembers(false, metadataWorkspace, ef); 

Varlık yerine her bir özellik değişiklik izlemek yapma: Ben T4 Şablon bu çizgiye değişti 503.

Entity Framework Recipes: A Problem-Solution Approach sayfa: kitapta belirtildiği gibi

Ben T4 Şablon modifiye Sadece Varlığın değiştiğini izleme.

Ve ayrıca

context.ObjectStateManager.ChangeObjectState(entity, EntityState.Unchanged); 

Bu değişiklikleri yaptıktan sonra ben GÜNCELLEME açıklamada sadece modifiye değerler/özelliklere sahip SQL deyiminin istenilen sonucu aldık. Ancak, garip bir yan etkisi vardı. Null olmayan bir INT özelliğini null'dan null değerine döndürürken, bu değişiklik Entity Framework tarafından yoksayıldı. Kendi Kendini İzleme Modelleri, ChangeTracker'daki değişikliği doğru OriginalValue null ile gösterir, ancak Entity Framework UPDATE SQL'i oluşturmaya çalıştığında, orijinal değeri boş ve yeni değer boş değilse, bu özellik değişimini görmedi. Orijinal değer boş değilse ve değer değiştiyse çalıştım.

Bir null değerden boş olmayan bir değere giden bir dize özelliği üzerinde çalışmak iyi görünüyor, ancak int? çalışmıyor.

Herhangi bir fikri olan var mı?

+0

Kod veya XML gönderirseniz, ** lütfen metin düzenleyicideki satırları vurgulayın ve güzel bir biçimde biçimlendirmek ve sözdizimini vurgulamak için editör araç çubuğundaki "kod" düğmesine (101 010) tıklayın! –

+1

STE şablonunda bir hata olabilir. Bu tartışma http://stackoverflow.com/questions/3598550/are-nullable-foreign-keys-allowed-in-entity-framework-4/3601768 –

+0

Yardımı ile ilgili bir yabancı anahtar yok. kullanarak. Yabancı anahtarları olmayan sadece 1 Varlık var. Yukarıdaki bağlantınız aynı sorun gibi görünüyor, ancak yine de bir çözüm yok. –

cevap

İlgili konular