例如,我有人,地点和人员位置表来链接这两者。我也有角色和人员表。
Tables:
Person (personid, name)
Personlocation (personid, locationid)
Location (locationid, description)
Personrole (personid, roleid)
Role (roleid, description)
EF将给我个人,角色和位置实体。
由于EF不会生成personlocation和personrole实体类型,因此不能 在查询中使用。
问题:如何添加Person对象并返回personid,然后将具有3个roleid的id添加到Personrole表/关联中?
e.g。
Person p = new Person();
p.name = "John"
......
entity.AddToPersons(p);
for(var roleid in Roleid)
entity.AddtoRoles(roleid)?
答案 0 :(得分:2)
问题:如何添加Person对象并返回personid,然后将具有3个roleid的id添加到Personrole表/关联中?
您只需要在“Person”实体上使用“Roles”关联。您无需直接添加到“角色”表中。
E.g:
// Create new Person
Person p = new Person();
p.Name = "John";
// Create new Role
Role r = new Role();
r.Description = "Administrator";
// Add new Role to this new Person
p.Roles.Add(r);
// Add Person to context (no need to add Role)
ctx.AddToPersons(p);
// Save Changes
ctx.SaveChanges();
实体框架非常聪明。它会看到有一个新角色,先添加一个,然后添加一个人,然后根据刚刚创建的角色的id在连接表中添加记录。
HTH。
编辑 - 回应评论:
thx,如果我想添加现有角色(例如Roleid = 1,description =“Editor”)
与上述非常相似。
只需从数据库中获取现有角色,然后将其添加到此人:
Role r = ctx.Roles.SingleOrDefault(x => x.RoleId == 1 && x.Description == "Editor");
p.Roles.Add(r);