У меня есть схема базы данных, подобная следующей:
Пользователь 1 ---- * UserRole * ---- 1 Роль
У меня есть классы пользователя и роли POCO:
public class User
{
public virtual Int64 Id { get; set; }
public string FullName { get; set; }
public virtual List<Role> Roles { get; set; }
}
public class Role
{
public virtual Int64 Id { get; set; }
public string Name { get; set; }
public virtual List<User> Users { get; set; }
}
У меня есть классы бизнес-компонентов и классы доступа к данным для обработки бизнес-логики и доступа к данным.
Я хотел добавить роли для выбранного пользователя, и код выглядит следующим образом:
В бизнес-компоненте:
public void AssignRoles(User user, string[] roleIds)
{
user.Roles.Clear();
foreach (string roleId in roleIds)
{
Role role = new RolesDataAccess().SelectRoleById(int.Parse(roleId));
if (role != null)
{
user.Roles.Add(role);
}
}
this.SaveUser(user);
}
public User SaveUser(User user)
{
if (user.Id == 0)
{
return dataAccess.Create(user);
}
else
{
return dataAccess.Update(user);
}
}
В доступе к данным:
public User Update(User user)
{
EntityKey key = null;
object original = null;
using (DocsFlowContext ctx = new DocsFlowContext())
{
key = ctx.CreateEntityKey(User.EntitySetName, user);
if (ctx.TryGetObjectByKey(key, out original))
{
ctx.ApplyCurrentValues(key.EntitySetName, user);
}
ctx.SaveChanges();
}
return user;
}
Этот код выполняется без ошибок, но он не вставляет никаких данных в мою таблицу UserRole. У кого-нибудь есть идеи по этому поводу?