C# 错误消息:";在此上下文中仅支持基元类型或枚举类型。”;
我正在处理asp.net页面的报表,并尝试将此linq语句的结果分配给现有数据集,但收到“此上下文中仅支持基元类型或枚举类型”错误消息。这是我的密码:C# 错误消息:";在此上下文中仅支持基元类型或枚举类型。”;,c#,asp.net,sql,linq,entity-framework,C#,Asp.net,Sql,Linq,Entity Framework,我正在处理asp.net页面的报表,并尝试将此linq语句的结果分配给现有数据集,但收到“此上下文中仅支持基元类型或枚举类型”错误消息。这是我的密码: var contextTable = new dbpersonnelEntities(); var contextHistory = new WriterInResidenceEntities(); var rslt = (from c in contextTable.TableofOrgani
var contextTable = new dbpersonnelEntities();
var contextHistory = new WriterInResidenceEntities();
var rslt = (from c in contextTable.TableofOrganizationRpts
where !(from o in contextHistory.emp_history
select o.employeeID).Contains((int)c.employeeid_fk)
select c).ToList();
ReportDataSource r = new ReportDataSource("tableOfOrgDS", rslt);
不能在单个LINQ查询中混合来自不同上下文的实体类型。将它们放在单个上下文中,或尝试执行以下操作:
var employeeIds = (from o in contextHistory.emp_history select o.employeeID).ToList();
然后将此列表传递到第二个查询:
var rslt = (from c in contextTable.TableofOrganizationRpts
where !employeeIds.Contains((int)c.employeeid_fk)
select c).ToList();
这将在生成的SQL查询中生成条件中的。请注意,这可能会很慢。是
dbPersonnebility
和WriterInResidenties
两种不同的类型,它们派生自ObjectContext
(或DbContext
)?@Dennis是的,它们是两种不同的类型,派生自两个不同的实体模型。我试图简单地列出组织表RPTS表中emp_历史表中不存在的所有员工。如果我尝试在代码中使用一个objectcontext,它会工作,但当我尝试执行此连接时,我得到了一个错误。这工作完美无瑕!这是一个很短的列表,所以几乎没有延迟。非常感谢你!!我是实体框架的新手,现在我将知道如何正确处理多个实体类型。