如何在MVC3下正确使用LINQ的Include
?
我创建了 .edmx 文件,它包含所有表格。
其中两人有关系
UserCategories 1..0 - *用户
我想要使用
var userCategories = db.UserCategories.Include("Users");
以填充Users
属性。 但它总是空的 。
(Here有一个很好的例子如何使用它。但没有成功。)
我该如何解决?
P.S。 POCO课程
public partial class UserCategory
{
public UserCategory()
{
this.Users = new HashSet<User>();
}
public string Name { get; set; }
public System.Guid ID { get; set; }
public virtual ICollection<User> Users { get; set; }
}
答案 0 :(得分:1)
好的,首先如果Users
它是空的可能是因为你没有数据库中的数据。现在要具体重构你的表达式
var userCategories = db.UserCategories.Select(x => x.Users).ToList();
这将检索数据库中与表UserCategory
有关系的所有用户如果你只是试图获得用户,无论与表的关系
var users = db.Users.ToList(); // This retrieve all the users in your database
免责声明:请注意,此表达式是竖起的,并且会仔细使用您的数据库的所有记录
答案 1 :(得分:0)
Class Model
{
private int userName;
.....
public UserName{get{return userName;} set{userName= value;}}
....
}
我假设Model是传递模型,它有UserName属性。用户表中有一个userName列。
private dbContext db = new dbContext();
public List<Model> method(){
List<Model> m= List<Model>()
var userCategories = db.UserCategories.Include("Users");
return from item in userCategories select new Model
{
UserName = item.Users.userName
.......
}
}
此返回值将为IEnumerable<Model>
,它将在foreach中执行。所以