내가 MVC/C 번호에 새로운 오전 사용하여 작은 프로젝트에 대한 작업을 시도 EF 다음의 4 개 가지 클래스가 포함 코드 첫째 : Office
, Role
, User
및 OfficeUser
을 .다중성 제약/SQL 서버/EF 코드 첫
문제는 User
과 OfficeUser
자신의 관계를 가지고 또한, User
(마스터 역할 ID FK Role.RoleId을 정의) 및 OfficeUser
사이에 같은 Role
클래스를 사용 (Role.RoleId 특히 사무실 FK에 대한 OfficeRoleId를 정의)하는 것을 시도하고있다.
따라서 특정 사용자가 사이트에 로그인 할 때 역할을 받아야하는 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