使用Entity Framework进行正确查询

时间:2014-03-28 13:28:26

标签: c# entity-framework

我有两个表“Users”和“UserType”。 “userTypeID”列上的这些表之间存在关系。此列是“UserType”表中的主键和“User”表中的外键。我在“用户”类中也有一个属性,如下所示:

public virtual UserType usertype{ get; set; }

我正在查询“用户”表格如下:

List<MyApp.Entity.Models.User> userList = new List<User>();
using (var DBContext = new UserDBContext())
{
userList  = DBContext.User.Where(x => x.IsActive == true).OrderBy(i => i.userName).ToList();
return userList;
}

当我调试代码时,userList.usertype为null。我需要在userList中有UserType。我究竟做错了什么?我是Entity Framework的新手。

2 个答案:

答案 0 :(得分:1)

包含在班级的顶部:

using System.Data.Entity

然后像这样修改您的查询:

userList  = DBContext.User
                .Include(u => u.usertype)
                .Where(x => x.IsActive)
                .OrderBy(i => i.userName)
                .ToList();

这称为Eager Loading。您可以在此处详细了解:Loading Related Entities

答案 1 :(得分:1)

您必须明确包含usertype

userList  = DBContext.User
.Include("usertype")
.Where(x => x.IsActive == true).OrderBy(i => i.userName).ToList();

或者使用lambda: 添加using System.Data.Entity;

userList  = DBContext.User
.Include(x => x.usertype)
.Where(x => x.IsActive == true).OrderBy(i => i.userName).ToList();