为什么我的 IQueryable LINQtoObject 被视为 LINQtoSQL 并抛出不支持的 SQL 转换

发布于 2024-09-24 09:01:17 字数 781 浏览 6 评论 0原文

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

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

I have a LINQ dbml class that I am wrapping in a POCO. I have built overloaded constructors that take the DBML class and init. the wrapper objects properties based on the dbml object passed in.

For example

public class MyPerson{

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

if I then do something like this where I return an IQueryable

{

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

When I try to do further queries on that Iquearble I get "System.NotSupportedException: The member 'MyPerson.ID' has no supported translation to SQL.."

However if I do this
{

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

I don't get an error at all and everything works perfect. Basically I want to have my class handle the conversion from LINQ object to POCO itself.

Basically I have to use the Object Initializer or I am unable to match on that field.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

追星践月 2024-10-01 09:01:17

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

iqueryable-can-kill-your-dog -偷走你的妻子杀死你的生存意志等

Ok not sure this will actually help anyone but but myself but my whole problem is the I shouldn't be using IQuerable after a certain point(outside of my repository)

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文