Почему мой IQueryable LINQtoObject обрабатывается как LINQtoSQL и не выдает поддерживаемый перевод в SQL

У меня есть класс LINQ dbml, который я обертываю в POCO. Я создал перегруженные конструкторы, которые принимают класс DBML и init. свойства объектов оболочки на основе переданного объекта dbml.

Например

public class MyPerson{

   public MyPerson(DBMLPerson p)
   {
        this.ID = p.ID;
        this.Name = p.Name;
   }
}

если я сделаю что-то вроде этого, где я верну IQueryable

{

return from p in datacontext.DBMLPerson
        select new MyPerson(p){};
}

Когда я пытаюсь выполнить дальнейшие запросы к этому Iquearble, я получаю «System.NotSupportedException: элемент 'MyPerson.ID' не поддерживает перевод в SQL ..»

Однако если я сделаю это {

return from p in datacontext.DBMLPerson
        select new MyPerson(){
            ID = p.ID;
            Name = p.Name;
        };
}

У меня вообще нет ошибок и все работает отлично. В основном я хочу, чтобы мой класс обрабатывал преобразование объекта LINQ в сам POCO.

В основном мне нужно использовать инициализатор объекта, иначе я не могу сопоставить это поле.


person ctrlShiftBryan    schedule 20.09.2010    source источник


Ответы (1)


Хорошо, не уверен, что это действительно поможет кому-то, кроме меня, но вся моя проблема в том, что я не должен использовать IQuerable после определенного момента (за пределами моего репозитория)

iqueryable-can-kill-your-dog-steal-your-wife-kill-your-will-to-live-etc

person ctrlShiftBryan    schedule 20.09.2010