Я использую аналогичный подход для других, поддерживая объекты LINQ в моем поставщике данных LINQ и возвращаю IQueryable, чтобы разрешить фильтрацию и т. Д. Это отлично подходит для фильтрации простого объекта по его идентификатору или другому недвижимость, но у меня возникли проблемы с присоединением объекта таблицы, которая состоит из других дочерних объектовLINQ to SQL DTO и составные объекты
//CoreDBDataContext db = coreDB;
public IQueryable<DTO.Position> GetPositions() {
return from p in coreDB.Positions
select new DTO.Position
{
DTO.User = new DTO.User(p.User.id,p.User.username, p.User.firstName,p.User.lastName,p.User.email,p.User.isActive),
DTO.Role = new DTO.Role(p.Role.id, p.Role.name, p.Role.isActive),
DTO.OrgUnit = new DTO.OrgUnit(p.OrgUnit.id,p.OrgUnit.name,p.OrgUnit.isActive)
};
в coreDB.Positions моя Linq позиции объект и я возвращающая позиции DTO, который состоит из пользователя, OrgUnit и Role (базовая таблица - таблица соединений с идентификаторами пользователя, RoleID и OrgUnitID)
Проблема, с которой я столкнулся S, что, когда я пытаюсь добавить фильтр на IQueryable я получаю SQL ошибка о том, что нет перевода для моего объекта DTO.User
public static IQueryable<Position> WithUserID(this IQueryable<Position> query, int userID)
{
return query.Where(p => p.User.ID == userID);
}
Я в полной растерянности относительно того, как идти о решении это, поскольку все мои результаты Google, похоже, связаны с людьми, которые работают напрямую с созданными объектами LINQ.
Любые мысли о том, как сделать эту работу, или я делаю что-то совершенно неправильно здесь?
Благодаря
почти, оберните Func в Expr <> – eglasius
, но тогда зачем делать результат IQueryable :) – eglasius
Кстати, я использовал оба подхода, см. Мой ответ :) – eglasius