我已经实现了基于LINQ to SQL的RoleProvider
,当我在调用AddUsersToRoles
方法时抛出异常时向用户分配角色。我已经定义了一个复合主键userid
&在这个表上roleId
,它仍然抛出这个异常:
无法执行创建,更新或删除 'Table(UsersInRole)'上的操作 因为它没有主键。
我的AddUsersToRoles
方法的LinQ to SQL实现如下。它在db.UsersInRoles.InsertOnSubmit(userInRole);
using (RussarmsDataContext db = new RussarmsDataContext())
{
List<UsersInRole> usersInRole = new List<UsersInRole>();
foreach (string username in usernames)
{
foreach (string rolename in rolenames)
{
UsersInRole userInRole = new UsersInRole();
object userId = ProvidersUtility.GetUserIdByUserName(username,applicationName);
object roleId = ProvidersUtility.GetRoleIdByRoleName(rolename,applicationName);
if (userId != null && roleId != null)
{
userInRole.UserId = (Guid)userId;
userInRole.RoleId = (Guid)roleId;
db.UsersInRoles.InsertOnSubmit(userInRole);
}
}
}
try
{
// db.UsersInRoles.InsertAllOnSubmit(usersInRole);
db.SubmitChanges();
}
catch (ChangeConflictException)
{
db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);
db.SubmitChanges();
}
}
任何帮助将不胜感激。 感谢。
答案 0 :(得分:0)
LINQ to SQL本身不支持多对多...连接表必须有两个外键列PLUS 1主键列具有IDENTITY
属性。