[英]Better way to join tables with Entity Framework
早上好,
我继承了一个没有外键关系的数据库,而该项目使我不得不忽略这个主要问题并加以解决。 显然,这消除了Entity Framework的一些凉爽功能,自动为我提供了相关的实体。
所以我被迫做这样的事情:
using (var db = new MyEntities())
{
Entities.Info record = db.Infoes.Where(x => x.UserId == authInfo.User.Id).FirstOrDefault();
//Get all the accounts for the user
List<Entities.AcctSummary> accounts = db.AcctSummaries.Where(x => x.InfoId == record.Id).ToList();
//Loop through each account
foreach (Entities.AcctSummary account in accounts)
{
//pull records for account
List<Entities.Records> records= db.Records.Where(x => x.AcctSummaryId == account.Id).ToList();
}
}
是否有更好的方式联接“记录”和“帐户”实体,或者是更有效的方式来在单个查询中获取“记录”?
TIA
您只是在寻找.Join()
扩展方法吗? 例如,加入Infoes
和Accounts
可能看起来像这样:
var accounts = db.Infoes.Join(db.Accounts,
i => i.Id,
a => a.InfoId,
(info, account) => new { info, account });
这将导致accounts
是具有两个属性的匿名类型的枚举,一个属性是Info
记录,另一个属性是Account
记录。 该集合将是联接记录的完整超集。
当然,您可以返回除new { info, account }
,它的工作方式与您放入.Select()
子句中的任何内容一样。 从这些联接表中选择的任何内容都将是您在accounts
的枚举。 您可以通过更改.Join()
扩展名来进一步.Join()
更多表,并从每个表中返回所需的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.