Asp.net mvc 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;} } 我想先用代码来建立它们之间的
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。我做错了什么?