“该查询包含在不同的数据上下文定义的项目的引用” altough的DbContext相同
问题描述:
public IQueryable<SMMSALESUNIT> GetPersonalSalesUnitQuery()
{
var q = from r in dax.SMMSALESUNITs
where r.DATAAREAID == COMPANYID
&& r.ACTIVE == 1
select r;
}
public IQueryable<SMMSALESUNITMEMBER> GetPersonalSalesUnitMemberQuery()
{
IQueryable<SMMSALESUNIT> salesUnit = new SMMSALESUNIT().GetPersonalSalesUnitQuery();
var q = from r in dax.SMMSALESUNITMEMBERs
join s in salesUnit on r.SALESUNITID equals s.SALESUNITID
select r;
return q;
}
在q.ToList()
出现以下错误: “该查询包含对一个不同的数据上下文中定义的项的引用”“该查询包含在不同的数据上下文定义的项目的引用” altough的DbContext相同
答
问题是(最有可能)在这里:
IQueryable<SMMSALESUNIT> salesUnit = new SMMSALESUNIT().GetPersonalSalesUnitQuery();
dax
在GetPersonalSalesUnitQuery
使用似乎是SMMSALESUNIT
类的实例成员。在这里,您将创建新的SMALLSALESUNIT
以及dax
的新实例。然后,你做
var q = from r in dax.SMMSALESUNITMEMBERs
join s in salesUnit on r.SALESUNITID equals s.SALESUNITID
select r;
这是另一个dax
,不是SMALLSALESUNIT
上面创建的实例成员。因此,您尝试从两个不同的上下文中加入查询,该查询失败。
+0
同意。他应该删除“新的SMMSALESUNIT()”。“从你提到的问题和解决的问题。 – JuanR
显示'dax'的声明和初始化。 – CodeCaster
..并显示如何(在什么情况下)你调用这两种方法 –
上次我看到这个,这是因为一个类作用域变量被两个不同的线程使用。一个线程使用一个上下文来设置它,而另一个线程正在使用它。如果此类正在被多个线程使用,请删除所有类作用域的变量。 – Will