0

MVC アプリに 2 つのエンティティがあります。

public class User
{
    public int ID {get; set;}
    public string Forename {get; set;}
    public string Surname {get;set;}
}

public class SubGroup
{
    public int ID {get;set;}
    public string Name {get;set;}
}

Code First を使用して、それらの間の関係を作成したいと考えています。この関係は、各ユーザーが 0 個以上のサブグループのメンバーになることができるということです。

SOでいくつかの例を見て混乱しているので、誰かがこれを行うための最良の方法を提案してください。クラスに ICollection を実装する方法や、流暢な API を使用する方法について見てきました。

4

2 に答える 2

1

ICollections アプローチ: 更新:

多対多の関係があることを正しく理解していれば (グループには多くのユーザーがいて、ユーザーは多くのグループに属することができます)、その場合、コードは次のようになります。

        public class RelationExampleContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<SubGroup> SubGroups { get; set; }

}


public class User
{
    [Key]
    public int ID { get; set; }
    public string Forename { get; set; }
    public string Surname { get; set; }

    public ICollection<SubGroup> SubGroups { get; set; } 
}

public class SubGroup
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }

    public ICollection<User> Users { get; set; }
}

ユーザーをグループに追加する例:

 var db = new RelationExampleContext();

var subGroups = new List<SubGroup>
                                {
                                    new SubGroup() {Name = "Subgroup1"},
                                    new SubGroup() {Name = "Subgroup2"}
                                };

            var users = new List<User>
                            {
                                new User()
                                    {
                                        Forename = "Forename1",
                                        Surname = "Surname1",
                                        SubGroups = new List<SubGroup>
                                                        {
                                                            subGroups.First(),
                                                            subGroups.Last()
                                                        }
                                    },
                                new User()
                                    {
                                        Forename = "Forename2",
                                        Surname = "Surname2",
                                        SubGroups = new List<SubGroup>
                                                        {
                                                            subGroups.First()
                                                        }
                                    }
                            };

            foreach (var subGroup in subGroups)
            {
                db.SubGroups.Add(subGroup);
            }

            foreach (var user in users)
            {
                db.Users.Add(user);
            }

            db.SaveChanges();
于 2012-11-23T10:06:28.277 に答える