0

我有一个包装在 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 本身的转换。

基本上我必须使用对象初始化器,否则我无法在该字段上匹配。

4

1 回答 1

1

好的,不确定这实际上会帮助除我自己以外的任何人,但我的整个问题是我不应该在某个点之后使用 IQuerable(在我的存储库之外)

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

于 2010-09-20T20:58:04.790 回答