に違反し、EFコード-最初に以下の4つのクラスが含ま使用して小規模なプロジェクトで作業しようとしている:Office
、Role
、User
とOfficeUser
を。私はUser
(マスターRoleId FK Role.RoleIdを定義)とOfficeUser
(Role.RoleIdに特定のオフィスFKためOfficeRoleIdを定義する)、またUser
とOfficeUser
の間で同じRole
クラスを使用しようとしていますです多重度制約は、私はMVC/C#に新しいですVS 2010/SQL Serverの/ EFコード・ファースト
問題は、独自の関係を有しています。
私は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