Varlık Çerçevesini Otomatik Olarak Güncelleme Mülkiyet Gezinti Kimliğine

Varlık Çerçevesinde, tablolarımı tasarımcı aracılığıyla ilgili varlıklarla eşleştirdiğimde ve bunları gerçekten kullandığımda, bir ilişkinin var olduğu bir tanesinin ( Şey ) olduğunu göreceğim. , veya bire bir) başka bir nesneyle, örneğin, Bob , örneğin, Şey 'de şu üç özelliği üretecektir:

Bob
BobId
BobReference

Ve BobId 'i ayarlayacak ve varlıkımı kaydedeyim, bir dahaki sefere Şey ' i getirdiğimde, Bob 'a gidebileceğim zahmetsizce mülk. Bununla birlikte, EF'i hemen kaydetmek zorunda kalmadan mülkte gezinmeme izin verecek şekilde yapılandırılması mümkün olduğunda merak ediyorum.

3
Tembel yüklemeyi devre dışı bıraktınız mı? Eğer tembel yükleme etkinse, gezinti özelliğini açıkça yüklemeniz gerekmez.
katma yazar tdykstra, kaynak
Senaryoyu doğru anlıyorsam, tembel yüklemenin yapacağına inanıyorum. Bir davranış özelliğine erişmeye çalışırsanız ve özellik null olursa, bu özelliği davranışlarımda gördüğümden sonra, her zaman özelliği yüklemeye çalışır ve bu durumda, yalnızca güncellemiş olduğunuz FK değerini kullanır Varlığı henüz kaydetmedim.
katma yazar tdykstra, kaynak
Bu, tembel yükleme işleminin etkin olup olmamasından kaynaklanmamaktadır. Zaten aslında etkindir; Asıl soru, bir modelin mülkiyeti üzerine bir ilişkinin kimliğini ayarladıktan sonra, navigasyon sırasında mülkün otomatik olarak yüklenmesinin bir yolu olup olmadığıydı.
katma yazar doctorless, kaynak
Bahsettiğiniz senaryo tam olarak ne yapmaya çalıştığım, ancak işe yaramadı. Navigation özelliği boş kaldı.
katma yazar doctorless, kaynak

1 cevap

Böyle bir şey yapabilirsiniz: (EF 4.1)

//Has to exists a record on Bob table with Id = 1
var thing = new Thing() { BobId = 1 };

var context = new YouContext();
context.Entry(thing ).State = EntityState.Unchanged;
context.Entry(thing ).Reference(x => x.Bob).Load();

ve sonra thing.Bob is! = null

1
katma
Tek düşündüğüm şey buydu. Daha fazla Id var olan boş varlık referanslarını kontrol etmek ve referansı yüklemek için bağlamı yapılandırma yolu olduğunu umuyordum Ne yazık ki, görünmüyor. Seni cevap olarak işaretliyorum çünkü en yakın olan bu.
katma yazar doctorless, kaynak