こんにちは私は、ユーザーとロールの間の多対多の関係のために自分のエンティティフレームワークを設定しようとしています。エンティティフレームワークのユーザーロール多人数の関係
下の画像はデータベースに何があるかを示しています。
ユーザーのためのモデルは、次のとおりです。役割のため
public class User : IEntity
{
public virtual int UserId { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string UserName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string FirstName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string LastName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(200)]
public virtual string EmailAddress { get; set; }
public int AreaId { get; set; }
[Column(TypeName = "varchar")]
[StringLength(64)]
public string CreatedByUserName { get; set; }
public DateTime CreatedDateTime { get; set; }
[Column(TypeName = "varchar")]
[StringLength(64)]
public string LastModifiedByUserName { get; set; }
public DateTime? LastModifiedDateTime { get; set; }
//Navigation properties
//public virtual Role Role { get; set; }
public virtual Area Area { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
モデルは次のとおりです。
public class Role : IEntity
{
public int RoleId { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public string Name { get; set; }
[Column(TypeName = "varchar")]
[StringLength(1000)]
public string Description { get; set; }
[Column(TypeName = "varchar")]
[StringLength(64)]
public string CreatedByUserName { get; set; }
public DateTime CreatedDateTime { get; set; }
[Column(TypeName = "varchar")]
[StringLength(64)]
public string LastModifiedByUserName { get; set; }
public DateTime? LastModifiedDateTime { get; set; }
//Navigation Properties
public ICollection<User> Users { get; set; }
}
のUserRoleは次のとおりです。
私は次のように追加Server Error in '/' Application.
Invalid object name 'dbo.RoleUser'.
:
public class UserRole
{
public int UserId { get; set; }
public int RoleId { get; set; }
//Navigation properties
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
は、だから、私は、これは細かい設定していたと思ったが、私のコードでは、私のようなものに行く:
var roles = from r in user.Roles
select r.Name;
をし、それがのエラーを与えて自分自身を撮影します文脈に:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(i => i.Roles)
.WithMany(u => u.Users);
}
しかし、今私はエラーを受け取ります:
'/'アプリケーションでサーバーエラーが発生しました。 無効な列名 'Role_RoleId'です。 無効な列名 'User_UserId'です。
確かに私はここに何か正しく設定していません。あなたは正しい方向に私を向けることができますか?
RoleエンティティがUserエンティティを認識しない場合はどうですか?設定コードを書くには? –