我有一个包装在 POCO 中的 LINQ dbml 类。我已经构建了采用 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: The member 'MyPerson.ID' has no supported translation to SQL..”
但是,如果我这样做{
return from p in datacontext.DBMLPerson
select new MyPerson(){
ID = p.ID;
Name = p.Name;
};
}
我根本没有收到错误,一切都很完美。基本上我想让我的班级处理从 LINQ 对象到 POCO 本身的转换。
基本上我必须使用对象初始化器,否则我无法在该字段上匹配。