我有以下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
查询以进行此选择而无需多次连接到数据库?
答案 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急切地拉动数据而不是懒惰。