【问题标题】:Entity Framework Error Trying to Get Row Count in Linq to Entities实体框架错误试图在 Linq to Entities 中获取行数
【发布时间】:2014-02-28 13:24:39
【问题描述】:

当我尝试运行这段代码时:

var qry = ( from v in db.Visits
           where v.VisitorID == visitorID
              && v.IncomingID == incomingID
              && v.ProjectID == ProjectID.GetID()
           select v.VisitorID);

int visits = qry.Count();

qry 运行正常,但“int visit = ...”行弹出“LINQ to Entities 无法识别方法 'Int32 GetID()' 方法,并且该方法无法转换为存储表达式。”

我做错了什么?

【问题讨论】:

  • 在您尝试执行 Count 之前,查询不会运行。
  • ProjectID.GetID() 这里有问题,你应该写一些 int 变量 -> int projectid = PorjectId.GetID();然后在您的 linq 中使用它,例如 -> ... && v.ProjectID == projectid ...

标签: c# linq entity-framework


【解决方案1】:

你做错了什么,ProjectID.GetID() 不能在 linq to entity 中调用,你可以在查询之前调用它:

var o = ProjectID.GetID();
var qry = (from v in db.Visits
           where v.VisitorID == visitorID && 
                 v.IncomingID == incomingID && 
                 v.ProjectID == o 
           select v.VisitorID);

int visits = qry.Count();

【讨论】:

  • 谢谢,过去一个小时我一直盯着这个看,但没有发现 :(
【解决方案2】:

您不能在这样的查询中调用自定义方法。

LINQ to Entities 通过构建表达式树以转换为数据库查询来工作。 它看到 ProjectID.GetID() 并且不知道如何将其转换为 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 2013-07-29
    相关资源
    最近更新 更多