这个问题让我发疯了。我知道之前已经问过,我已经尝试了所有这些解决方案。我知道我做错了什么,但我无法找到它。
我有以下型号:
public class User : UserEntityBase
{
/// <summary>
/// Gets or sets roles.
/// </summary>
public ICollection<SecurityRole> Roles { get; set; }
}
我有另一个角色模型:
public class SecurityRole : EntityBase
{
public string Name { get; set; }
public string Description { get; set; }
public ICollection<User> Users { get; set; }
}
映射设置为:
HasMany(u => u.Roles).WithMany(r=>r.Users).Map(m=>m.ToTable("securityuserroles").MapLeftKey("UserID").MapRightKey("RoleID"));
我想插入名为“Everyone”的安全角色的新用户。 我正在使用域名服务&gt;存储库模型。
在用户域服务插入方法中,我有以下代码:
var everyonerole = _roleService.Get(rol => rol.Name.Equals(SystemRoleTypes.Everyone.ToString())).SingleOrDefault();
if (everyonerole != null)
{
entity.Roles = new List<SecurityRole>();
entity.Roles.Add(everyonerole);
}
base.Insert(entity, out message);
通过运行insert,它将在以下位置插入记录:
用户,以及SecurityRole表。 然后它在securityuserroles中创建一个关系。
我理解为什么它会因“分离行为”而发生。但是,我从数据库中获取角色对象并直接添加到系统中。
请帮忙。