2016-11-16 42 views
0
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相同

+0

显示'dax'的声明和初始化。 – CodeCaster

+0

..并显示如何(在什么情况下)你调用这两种方法 –

+1

上次我看到这个,这是因为一个类作用域变量被两个不同的线程使用。一个线程使用一个上下文来设置它,而另一个线程正在使用它。如果此类正在被多个线程使用,请删除所有类作用域的变量。 – Will

回答

2

问题是(最有可能)在这里:

IQueryable<SMMSALESUNIT> salesUnit = new SMMSALESUNIT().GetPersonalSalesUnitQuery(); 

daxGetPersonalSalesUnitQuery使用似乎是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

相关问题