2012-08-30 29 views
1

如何在MVC3下正確使用LINQ的Include在MVC3中包含通過LINQ引用的表格

我創建了.edmx文件,它具有所有表格。

他們兩個有relashionships

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

向我們展示了POCO類 – Jorge

+0

@Jorge我能做到嗎?我不確定我是否擁有它。 –

+1

假設你正在使用實體框架檢查你的.tt文件 – Jorge

回答

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 

免責聲明:請注意,這個表達式是起伏帶來小心使用

+0

該死的。你是對的人! –

0
的數據庫中的所有記錄

我假設模型是傳遞模型,它有一個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執行。所以