Я унаследовал приложение ASP.NET MVC 4, которое использует Entity Framework и продолжает получать дубликаты записей по связанным таблицам. Я не смог понять, почему это происходит, и это происходит только случайным образом.Повторяющиеся записи с использованием ASP.NET MVC 4, Entity Framework и SQL Server
модели являются такие:
Company
-> имеет многоUsers
-> имеет многоUserRoles
UserRoles
ссылки В настоящемRoles
таблицу, которая имеетRoleId
иName
.
Это дублирующие записи в таблице 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;
}
}
Не могли бы вы показать код, в котором роли пользователя назначены? Это происходит в нескольких местах в базе данных? Вы можете предотвратить его, добавив уникальное ограничение в таблицу ролей. – DavidG
Вы нашли что-нибудь, отлаживая его? –
Я не могу заставить это случиться обычно, но в производстве это происходит все чаще и чаще. – CWitty