Ash*_*A N 58 c# linq entity-framework edmx
我收到LINQ查询标题中显示的错误,该查询包括来自两个不同edmx文件的两个表.这是查询:
var query = (from a in db1.Table1
join b in db1.Table2 on a.Id equals b.Id
orderby a.Status
where b.Id == 1 && a.Status == "new"
select new
{
Id = a.Id,
CompanyId = (from c in db2.Company
where s.Id == a.Id
select
new { c.CompanyId })
});
Run Code Online (Sandbox Code Playgroud)
db1并且db2是与两个不同的edmx文件关联的上下文.我怎样才能克服这个错误?
All*_*nek 111
您将不得不执行两个数据库查询:
var IDs = (from a in db1.Table1
join b in db1.Table2 on a.Id equals b.Id
orderby a.Status
where b.Id == 1 && a.Status == "new"
select new a.Id).ToArray();
var query = from c in db2.Company
join a in IDs on c.Id equals a.Id
select new { Id = a.Id, CompanyId = c.CompanyId };
Run Code Online (Sandbox Code Playgroud)
这.ToArray()至关重要.它阻止EF尝试执行组合查询(由于它使用两个不同的上下文,因此会失败).你可以使用,.AsEnumerable()如果你宁愿保持延迟加载.
还有你的后续问题:
有没有其他方法可以使LINQ查询更加优化?也就是说,在单个LINQ查询本身中执行操作?
为了使您的原始查询成功运行,它必须仅使用单个数据上下文,这意味着所有数据必须来自单个EDMX,这反过来意味着单个连接字符串.有几种方法可以实现这一目标:
| 归档时间: |
|
| 查看次数: |
50964 次 |
| 最近记录: |