C# 使用实体框架6在一个连接中获取依赖数据的linq查询
我有以下SQL语句:C# 使用实体框架6在一个连接中获取依赖数据的linq查询,c#,sql-server,linq,entity-framework,entity-framework-6,C#,Sql Server,Linq,Entity Framework,Entity Framework 6,我有以下SQL语句: DECLARE @UserID INT SELECT Col1, Col2, Col3, @UserID = UserID FROM Users WHERE UserName = <username> AND Password = <password> SELECT Col1, Col2, Col3 FROM ClientUser WHERE UserID = @UserID DECLARE@UserID INT 选择Col1、Col2
DECLARE @UserID INT
SELECT Col1, Col2, Col3, @UserID = UserID
FROM Users
WHERE UserName = <username> AND Password = <password>
SELECT Col1, Col2, Col3
FROM ClientUser
WHERE UserID = @UserID
DECLARE@UserID INT
选择Col1、Col2、Col3、@UserID=UserID
来自用户
其中UserName=和Password=
选择Col1、Col2、Col3
来自ClientUser
其中UserID=@UserID
在上述查询中有两个select语句,一个用于获取
UserID
,另一个用于从Users
表获取其他列信息,另一个用于基于@UserID
值从另一个表获取信息。如何在实体框架
上下文上编写linq
查询,以便在不多次连接数据库的情况下执行此选择?假设您有两个类,User和ClientUser,它们是实体框架模型的一部分。它们可能看起来像这样
public class User
{
public int UserId { get; set; }
public string Col1 { get; set; }
//More to be here
public virtual ICollection<ClientUser> Clients { get; set; }
}
public class ClientUser
{
public int ClientId { get; set; }
public int UserId { get; set; }
public virtual User User {get; set;}
}
然后将所需内容添加到查询中。通过使用“include”,它确保EF急切地而不是懒散地提取数据。您可以使用linq join根据用户ID连接两个表,然后获取数据。这样,它将只使用一次db命中
var query = YourContext.Users.Get().Include(x => x.Clients);