Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc代码首先建模多个关系-简单示例_Asp.net Mvc_Entity Framework_Ef Code First_Entity - Fatal编程技术网

Asp.net mvc mvc代码首先建模多个关系-简单示例

Asp.net mvc mvc代码首先建模多个关系-简单示例,asp.net-mvc,entity-framework,ef-code-first,entity,Asp.net Mvc,Entity Framework,Ef Code First,Entity,我在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;} } 我想先用代码来建立它们之间的

我在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;}
}
我想先用代码来建立它们之间的关系。关系是每个用户都可以是0个或多个子组的成员


请有人建议最好的方法,因为我已经看到了一些例子,所以我很困惑。我看过关于在类中实现ICollections的内容,还有关于使用fluent API的内容。

我猜用户和子组在数据库中有相同的表 您需要在这些表之间创建关系表(字段用户id、组id) 新实体(如用户组)的模型

然后您可以在用户类中创建合成

i收集方法: 更新:

如果我理解正确,您有多对多关系(组有多个用户,用户可以在多个组中),在这种情况下,代码应该如下所示:

        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; }
}
公共类关系ExampleContext:DbContext
{
公共数据库集用户{get;set;}
公共DbSet子组{get;set;}
}
公共类用户
{
[关键]
公共int ID{get;set;}
公共字符串名{get;set;}
公共字符串姓氏{get;set;}
公共ICollection子组{get;set;}
}
公共类分组
{
[关键]
公共int ID{get;set;}
公共字符串名称{get;set;}
公共ICollection用户{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();
var db=newrelationExampleContext();
变量子组=新列表
{
新建子组(){Name=“Subgroup1”},
新建子组(){Name=“SubGroup 2”}
};
var users=新列表
{
新用户()
{
Forename=“Forename1”,
姓氏=“姓氏1”,
子组=新列表
{
子群.First(),
子群。最后()
}
},
新用户()
{
Forename=“Forename2”,
姓氏=“姓氏2”,
子组=新列表
{
子群。第一()
}
}
};
foreach(子群中的var子群)
{
db.SubGroups.Add(SubGroups);
}
foreach(用户中的var用户)
{
db.Users.Add(用户);
}
db.SaveChanges();

OK,创建另一个表。你说的“在用户类中创建组合”是什么意思?我想你问的是模式组合,我的意思是类似这样的
code
public-class-UserGrops{public\uuu-construct(UserId){}public-function-getGrops(){……}}public-class-User{//new property-UserGrops//add method public-function-grops(){this.userGroups=newusergrops(this.ID)}},您可以使用构造user.grops.getGrops()
code
我希望您理解我使用另一种编程语言的想法这是一个很好的回答,正是我想要的-谢谢!我需要在Visual Studio 2010中做什么才能看到像您上面发布的关系图?要显示关系图,您应该生成edmx模型。但是如果您选择e CodeFirst方法。edmx模型通常与数据库优先方法或模型优先方法一起使用。但如果您仍要添加edmx模型,可以在菜单中选择:添加>新建项>ADO.NET实体数据模型>从数据库生成。我已在ContextInitializer中植入了一些数据。我已创建了两个新用户并将其添加到上下文中。然后,我创建了两个新的子组,并向每个子组添加了一个新列表()。第一个用户是组1和组2的成员,第二个用户是组1的成员。但当我执行查询时,它只显示组1的子组ID。我做错了什么?