Linq to Sql объект не заполнен - PullRequest
       3

Linq to Sql объект не заполнен

2 голосов
/ 06 сентября 2010

Я новичок в Linq и пытаюсь решить проблему с отложенным выполнением. В моем приложении есть уровень данных, который использует Linq to Sql, а затем передает сущность в модель представления с помощью службы WCF (архитектура MVVM). На этом этапе объект сериализуется.

Я передаю объект Employee, у которого должен быть дочерний объект Rota, однако, когда я пытаюсь получить к нему доступ в моей модели представления из WCF, Rota имеет значение null. Если я рассматриваю объект сотрудника в отладочном режиме до его прохождения, Rota сериализуется и становится доступным в моей модели представления. Мой запрос Linq - простой выбор, как мне сделать так, чтобы он проходил через ротацию? Я мог бы пройтись по каждому сотруднику, чтобы перечислить объект запроса и ротацию, но это выглядит очень неправильно.

Ответы [ 3 ]

3 голосов
/ 06 сентября 2010

Поскольку вы используете LinqToSql, вы должны использовать DataContext.LoadWith при получении ваших объектов.Это предпочтительный способ сообщить LinqToSql, что он должен выполнять (так как по умолчанию используется ленивая нагрузка).

DataLoadOptions options = new DataLoadOptions();
options.LoadWith((Employee c) => c.Rota);
db.LoadOptions = options;

http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.loadwith.aspx

Это дает преимущество гораздо более эффективносторона SQL по сравнению с вызовом ToList или индивидуальным расширением свойств EntityRef.

0 голосов
/ 06 сентября 2010

Вы уже на правильном пути - запрос выполняется только после его итерации (проверка в режиме отладки также вызывает эту итерацию). Просто позвоните ToList() на IQueryable (итерируя его) перед отправкой через веб-сервис.

0 голосов
/ 06 сентября 2010

Я предполагаю, что Рота содержится в коллекции. Установите тип коллекции как List<Rota>, это должно работать, если это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...