这是我在stackoverflow中的第一个问题,但实际上并不是第一次在这里获得解决方案。我正在努力与实体框架4中的多个连接。我有三个表(帐户,用户和AccountUsers),发现很难查询。
我想要的是获取所提供的accountId的所有用户,包括帐户创建者。我可以毫无问题地获得所有帐户用户,但对我来说困难的是获得帐户创建者,因为它没有添加到AccountUsers表中。下面是表格相关的快速预览。
帐户
用户
AccountUsers
我更喜欢查询是esql,但Linq to Entities会这样做。
我相信你们在stackoverflow,所以我知道这不会花很长时间来获得'答案'标记。
感谢您阅读。
答案 0 :(得分:0)
如果我正确地读你的问题,你不是在寻找一个像工会一样的联盟吗?我不确定esql,但我认为以下Linq查询应该有效。也许它会让你朝着正确的方向前进(或者我可能完全脱离基础或遗漏某些东西):
var users = (from accountUser in db.AccountUsers
where accountUser.AccountId == myAccountId
select accountUser.UserId)
.ToList()
.Add((from account in db.Accounts
where account.AccountId == myAccountId
select account.UserId)
.Single());
要使其延迟加载,您始终可以创建一个使用foreach
和yield return
的方法:
IEnumerable<int> GetAccountUsers(int AccountId)
{
//return the users
foreach(var userId in (from accountUser in db.AccountUsers
where accountUser.AccountId == myAccountId
select accountUser.UserId))
yield return userId;
//return the owner too
yield return (from account in db.Accounts
where account.AccountId == myAccountId
select account.UserId)
.Single();
}
出于好奇,为什么主人没有被添加到AccountUsers
表中?