Xin chào, tôi đang cố gắng thiết lập khung thực thể của mình cho mối quan hệ nhiều đến nhiều giữa Người dùng và Vai trò.Khuôn khổ thực thể Vai trò người dùng Nhiều mối quan hệ
Bức tranh dưới đây cho thấy những gì trong cơ sở dữ liệu:
Mô hình cho User là:
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; }
}
Mô hình Vai trò là:
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 là:
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; }
}
Vì vậy, tôi nghĩ rằng tôi đã này thiết lập tốt nhưng trong mã của tôi, tôi đi một cái gì đó như:
var roles = from r in user.Roles
select r.Name;
và nó bắn tự cho lỗi của:
Server Error in '/' Application.
Invalid object name 'dbo.RoleUser'.
vì vậy tôi thêm như sau theo ngữ cảnh:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(i => i.Roles)
.WithMany(u => u.Users);
}
Tuy nhiên, bây giờ tôi gặp lỗi:
Lỗi máy chủ trong ứng dụng '/'. Tên cột không hợp lệ 'Role_RoleId'. Tên cột không hợp lệ 'User_UserId'.
Vì vậy, chắc chắn tôi không có thiết lập nào ở đây chính xác. Có thể andybody chỉ cho tôi đi đúng hướng?
Trường hợp tổ chức Vai trò không biết thực thể Người dùng thì sao? Làm thế nào để viết mã cấu hình? –