我是 MVC/C# 的新手,并尝试使用 EF 代码优先处理一个小项目,其中包括以下 4 个类:Office
、和.Role
User
OfficeUser
问题是我试图在(定义 master RoleId FK Role.RoleId )和(将特定办公室 FK 的 OfficeRoleId 定义为Role.RoleId )Role
之间使用相同的类,并且有自己的关系。User
OfficeUser
User
OfficeUser
所以我正在尝试编写我的授权AuthorizeAttribute
,当他/她登录网站时,我需要获取特定用户的角色。当我执行 get
public User GetUserRoleByUserName(string userName, string passWord)
{
using (var context = DataContext)
{
return context.Users.Include("Role")
.Include("OfficeUsers")
.SingleOrDefault(u => u.UserName == userName && u.Password == passWord);
}
}
我收到以下错误
违反了多重性约束。关系“Inventory.Repository.User_OfficeUsers”的角色“User_OfficeUsers_Target”具有多重性 1 或 0..1。
你能告诉我如何解决这个问题吗?
public class Office
{
public Office()
{
OfficeUsers = new HashSet<OfficeUser>();
}
public int OfficeId { get; set; }
public string OfficeName { get; set; }
public virtual ICollection<OfficeUser> OfficeUsers { get; set; }
}
public class Role
{
public Role()
{
Users = new HashSet<User>();
OfficeUsers = new HashSet<OfficeUser>();
}
public int RoleId { get; set; }
public string RoleName { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<OfficeUser> OfficeUsers { get; set; }
}
public class User
{
public User()
{
OfficeUsers = new HashSet<OfficeUser>();
}
public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public int RoleId { get; set; }
public virtual ICollection<OfficeUser> OfficeUsers { get; set; }
public virtual Role Role { get; set; }
}
public class OfficeUser
{
public OfficeUser()
{
}
public int OfficeUserId { get; set; }
public int OfficeId { get; set; }
public int UserId { get; set; }
[ForeignKey("Role")]
public int OfficeRoleId { get; set; }
public bool Active { get; set; }
public User User { get; set; }
public Office Office { get; set; }
public Role Role { get; set; }
}