Я пытаюсь использовать EF4 как часть .NET WCF-сервиса. Целью сервиса является возврат данных документа в виде массива объектов объектов в любое из наших приложений ASP.Net. Приложения все еще находятся в .Net 2.0. Из-за характера решения я отключил LazyLoading на уровне контекста. Я начал с этого:EF4/Linq Eager Loading with Include не заполняет все результаты
var revQuery = from revs in context.tbl_Document_Revision
where (revs.ID == myIDVar)
select revs;
Все работает нормально, я получаю правильное количество населенных объектов. Однако, когда я добавить включаемый в мой запрос, чтобы позволить нам пикап полей из соответствующей таблицы, которая имеет определенную навигацию только первую запись возвращается полностью заселены к вызывающему приложению:
var revQuery = from revs in context.tbl_Document_Revision.Include("tbl_Staff")
where (revs.ID == myIDVar)
select revs;
Массив является правильный размер но все элементы после первого являются пустыми, заполнителями по умолчанию. Его, как и использование Include, вернулись к LazyLoading, и я не могу показаться, что он ударил его в линию. У кого-нибудь еще была эта проблема?
Можете ли вы опубликовать фрагмент диаграммы EDMX, который показывает объекты DocRevision и StaffNames. Почему нечетная плюрализация? Правильно ли имя «StaffNames»? Кстати, есть некоторые сильно типизированные версии '.Include 'в Интернете, которые могут вам помочь. Как вы проецируете данные в нужную «форму» для вашего массива? Вы тоже можете показать этот код? –
Они оба вариации на имена реальных объектов, поэтому я просто использовал все, что пришло в голову. Я просто использую revQuery.ToArray(); чтобы вернуть его. В некотором роде я применяю упрощенный подход с этим, так как я прыгаю прямо из работы в .Net 2, и мы небольшая команда без опыта Linq и т. Д. Я рассмотрю EDMX, мне будет необходимо одобрение руководства. Я боюсь. –
Adrian
Извините, StackOverflow не позволит мне добавить изображение, поскольку я слишком новичок на сайте. – Adrian