0

我在 MVC 应用程序中有两个实体:

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 上看到了一些例子,我很困惑。我已经看到有关在类中实现 ICollections 的内容,以及有关使用 fluent API 的其他内容。

4

2 回答 2

1

我猜用户和子组在数据库中具有相同的表,您需要在此表(字段 User_id,Group_id)模型之间为新实体(如 UserGroups)创建关系表

然后您可以在 User 类中创建组合

于 2012-11-23T09:58:21.377 回答
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 回答