在MVC3下通过LINQ包含引用表

时间:2012-08-30 16:10:35

标签: c# asp.net-mvc-3 linq

如何在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; }
    }

2 个答案:

答案 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中执行。所以