Мне интересно, есть ли какие-либо альтернативы использованию ключевого слова Expand при выполнении запроса LINQ to ADO.net Data Services. Метод расширения действительно дает мне данные, которые меня интересуют, но он требует, чтобы я знал все подобъекты, с которыми я собираюсь работать заранее. Моим абсолютным предпочтением было бы, чтобы эти суб-объекты загружались для меня лениво, когда я к ним обращаюсь, но это не вариант (я мог бы добавить эту ленивую загрузку в свойство get этого суб-объекта, но стирается, когда я обновляю ссылку на службу данных).
Есть ли у кого-нибудь какие-либо предложения / лучшие практики / альтернативы для этой ситуации? Спасибо.
===== Пример кода с использованием члена с почтовым адресом =====
Работы:
var me = (from m in ctx.Member.Expand("MailingAddress")
where m.MemberID == 10000
select m).First();
MessageBox.Show(me.MailingAddress.Street);
Предпочитал бы (очень хотел бы, если бы это пошло и загрузило MailingAddress)
var me = (from m in ctx.Member
where m.MemberID == 10000
select m).First();
MessageBox.Show(me.MailingAddress.Street);
Или, по крайней мере (примечание: что-то похожее на это, с MailingAddressReference, работает на стороне сервера, если я делаю это как LINQ to Entities в Service Service)
var me = (from m in ctx.Member
where m.MemberID == 10000
select m).First();
if (!(me.MailingAddress.IsLoaded())) me.MailingAddress.Load()
MessageBox.Show(me.MailingAddress.Street);