1

我对 LINQ 有一点问题

我有一个“资源”的 EntityCollection 每个“资源”都有一个“应用程序”的 EntityCollection

我现在需要为特定的“应用程序”找到“资源”

我首先找到给定的应用程序:

Application application = (from app in db.ApplicationSet
                           where app.Id == appId
                           select app).First();

这给了我“应用程序”

然后我尝试找到这个“应用程序”的应用程序:

var res = from rs in db.ResourceSet
          where rs.Applications.Contains(application)
          select rs;

这在 VS 中被接受,但是当我运行它调试时,“结果视图”返回一个

"System.SystemException = {"无法创建类型为“Application_Configuration_Management.Models.Application”的常量值。此上下文仅支持原始类型('例如 Int32、String 和 Guid')。"}"

谁能帮我?

4

1 回答 1

2

您的 LINQ2SQL 或 EF 提供程序抱怨它无法翻译application在列表上下文中使用的查询IN。在您的情况下,将搜索应用程序然后搜索其资源之一替换为按应用程序 ID 搜索资源可能会更好:

var res = from rs in db.ResourceSet
    where rs.Applications.Any(a => a.Id == appId)
    select rs;
于 2012-08-28T12:57:29.433 回答