【发布时间】:2015-10-07 08:20:58
【问题描述】:
我继承了一个使用 Entity Framework 的 ASP.NET MVC 4 应用程序,并不断在相关表上获取重复记录。我一直无法弄清楚为什么会发生这种情况,而且它只是随机发生的。
模型如下:
-
Company-> 有很多Users-> 有很多UserRoles -
UserRoles引用了具有RoleId和Name的Roles表。
它正在复制Roles 表中的条目。我一直在尝试解决这个问题,但对 EF 和其中一些还是很陌生。
UserRole.cs部分类:
public static bool UpdateUserRoles(int userId, List<int> roleIds)
{
using (var context = new ImageTrackerEntities())
{
var userRoles = context.UserRoles.Where(r => r.UserId == userId).ToList();
foreach (var role in userRoles)
{
// do not remove users from super admin role
context.Entry(role).State = EntityState.Deleted;
}
foreach (var id in roleIds)
{
var ur = new UserRole() {
RoleId = id,
UserId = userId
};
context.Entry(ur).State = EntityState.Added;
}
context.SaveChanges();
return true;
}
}
【问题讨论】:
-
你能显示分配用户角色的代码吗?这是否发生在数据库中的多个位置?您可以通过在角色表上添加唯一约束来防止它发生。
-
调试有没有发现什么?
-
我不能让它经常发生,但在生产中它发生的频率越来越高。
-
它有什么规律吗?
-
这是唯一修改角色的地方吗?另外,您可以在任何地方重命名/编辑角色吗?
标签: c# sql-server asp.net-mvc entity-framework duplicates