Версия EntityFramework в бета-версии VS2010 намного, намного дружелюбнее в этом отношении. Тем не менее, если вы застряли с версией без отложенной загрузки, этот метод расширения может помочь вам:
public static T EnsureLoaded<T>(this EntityReference<T> eRef) where T: class, IEntityWithRelationships
{
if (!eRef.IsLoaded)
eRef.Load();
return eRef.Value;
}
Затем, если у вас есть объекты User с контактами, вы можете сделать:
Contact c = User.ContactReference.EnsureLoaded();
Это все еще довольно отстойно, но я считаю, что предпочтительнее писать IsLoaded if, оператор снова и снова.