I couldn't find good documentation on just exactly what makes Entity Framework decide to look up the correct related object when the foreign key is set.
I'm using lazy loading (but not change tracking) proxies. Setting the foreign key and then getting the navigation property value returns null, even when the related navigation object is already loaded and sitting in the DbContext.
Calling DetectChanges works but seems heavy. Is there any other way to clue in Entity Framework to do fixup?
You're right. DetectChanges
is the method that triggers relationship fix-up. If you want relationship fix-up to happen for whatever reason, you call DetectChanges
.
But DetectChanges
is also called by EF itself when you execute the following methods:
(From Lerman & Miller's book DbContext, p. 60).
As you see, almost anything you will do with EF after setting the foreign key value will call DetectChanges
, so if you've got other useful stuff to do afterwards, do these things first and save one DetectChanges
call.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With