linq查询使用实体框架6在一个连接中获取依赖数据

时间:2015-03-25 06:16:56

标签: 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

上述查询中有两个select语句,一个用于获取UserID,其他列信息来自Users表,另一个用于根据@UserID值从另一个表中获取信息。如何在linq上下文中编写entity framework查询以进行此选择而无需多次连接到数据库?

1 个答案:

答案 0 :(得分:0)

让我们假设您有两个类,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;}
}

默认情况下你会使用延迟加载,因为我将这些定义为虚拟。如果你知道你需要更多,那就做这样的事情

var query = YourContext.Users.Get().Include(x => x.Clients);

然后添加查询所需的内容。通过使用“include”,它可以确保EF急切地拉动数据而不是懒惰。