【发布时间】:2011-10-21 02:50:07
【问题描述】:
我遇到了一对多关系的问题,我正在尝试更新其中一个表和链接表中的数据。
- 我有两个表(用户、角色)和一个链接表(用户角色)。
- 一个用户有很多角色。
- 角色是预定义的,只有 3 行,如下所示。
我想用角色更新用户。我无法使用以下代码。 请分享您的意见。
Original
User : John
Roles : Admin, User
Update to
User : John
Roles : User
这是表结构
User
UserID : Pk
Name
Roles //Data is not added in this table, Data already exists in this table
RoleID : Pk
Name
RoleID Name
1 Admin
2 User
3 None
UserRoles
UserID : PK
RoleID : Pk
对应的实体
User
UserId
Name
EntityCollection<Role> Roles
Role
RoleId
Name
EntityCollection<User> Users
我尝试了以下代码
public void update(int userId, string newusername, list<int> roleList)
{
using (DBEntites context = new DBEntites())
{
User objUserInDb = new User();
objUserInDb.UserID = userId;
Context.Users.Attach(objUserInDb);
objUserInDb.Name = newusername;
objUserInDb.Roles.Clear();
// TRIED TO USE The remove method objUserInDb.Roles.Remove(entity),
// is returning false
foreach (long pkIDToAdd in roleList)
{
Role objRoleInDb = new Role();
objRoleInDb.RoleId = pkIDToAdd;
// GIVES EXCEPTION
//An object with the same key already exists in the ObjectStateManager.
//The ObjectStateManager cannot track multiple objects with the same
//
context.Roles.Attach(objRoleInDb);
objUserInDb.Roles.Add(objRoleInDb);
}
}
}
【问题讨论】:
标签: c# .net entity-framework linq-to-entities