我是新来的MVC/C#,并试图使用一个小项目工作EF代码优先,其中包括以下4类:Office
,Role
,User
和OfficeUser
。多重约束/ SQL服务器/ EF代码优先
问题是,我想使用User
(定义主角色ID FK Role.RoleId)和OfficeUser
之间相同Role
类(定义OfficeRoleId特定办公室FK到Role.RoleId),也User
和OfficeUser
有自己的关系。
所以我想写我的授权使用AuthorizeAttribute
我需要得到特定用户在他/她登录到网站时的角色。当我执行得
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; }
}
除了多重删除路径问题,我无法重现错误。 – Eranga 2012-03-19 00:45:20