1

IncludeMVC3でLINQを正しく使用するにはどうすればよいですか?

.edmxファイルを作成しましたが、すべてのテーブルがあります。

それらの2つはrelashionshipsを持っています

UserCategories1..0-*ユーザー

私は使うと思いました

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

Usersプロパティを設定するため。しかし、それは常に空です。

ここにそれを使用する良い例があります。しかし成功しません。)

どうすれば修正できますか?

PSPOCOクラス

 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 属性があると想定しています。また、Users テーブルには 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 に答える