1

如何Include在 MVC3 下正确使用 LINQ?

我创建了.edmx文件,它包含所有表格。

他们中的两个有一个relashionships

UserCategories 1..0 - * 用户

我猜想使用

var userCategories = db.UserCategories.Include("Users");

为了填充Users属性。但它始终是空的。

这里有一个很好的例子如何使用它。但没有成功。)

我该如何解决?

PS 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; }
    }
4

2 回答 2

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

免责声明:请注意,此表达式是沉重的,并谨慎使用数据库的所有记录

于 2012-08-30T16:36:14.450 回答
0
Class Model
{
   private int userName;
   .....
   public UserName{get{return userName;} set{userName= value;}}
   ....
}

我假设 Model 是传递模型,它有一个 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 中执行。所以

于 2012-08-30T16:57:41.787 回答