Tôi đang sử dụng khung pháp nhân và mô hình hóa mối quan hệ nhiều-nhiều.Có thể trực tiếp tham khảo bảng nhiều người dùng khung thực thể, mã đầu tiên
Tôi đã tạo ra mối quan hệ giữa hai thực thể sử dụng API thông thạo (giả sử người dùng và nhóm):
this.HasMany(t => t.Users)
.WithMany(t => t.Groups)
.Map(
m =>
{
m.ToTable("GroupMembers");
m.MapLeftKey("Group_Id");
m.MapRightKey("User_Id");
});
này hoạt động tuyệt vời, nhưng tôi muốn cũng có thể tham khảo bảng GroupMembers trực tiếp. Để làm điều đó, tôi có một cái gì đó như:
[Table("GroupMembers")]
public class GroupMember
{
#region Properties
/// <summary>
/// Gets or sets the group.
/// </summary>
public virtual Group Group { get; set; }
/// <summary>
/// Gets or sets the Id of rht group.
/// </summary>
[Key]
[Column("Group_Id", Order = 1)]
public int GroupId { get; set; }
/// <summary>
/// Gets or sets the user.
/// </summary>
public virtual User User { get; set; }
/// <summary>
/// Gets or sets the Id of the user.
/// </summary>
[Key]
[Column("User_Id", Order = 2)]
public int UserId { get; set; }
#endregion
}
Tuy nhiên, tôi sẽ nhận được lỗi sau khi khởi tạo của DbContext:
Schema định là không hợp lệ. Lỗi: (381,6): lỗi 0019: EntitySet 'GroupUser' với lược đồ 'dbo' và bảng 'GroupMembers' là đã được xác định. Mỗi EntitySet phải tham chiếu đến một lược đồ duy nhất và bảng .
Tôi tin rằng điều này là do khung thực thể không nhận ra rằng bảng GroupMembers được chỉ định trong API thông thạo và bảng thực thể GroupMembers thực sự là một trong cùng một. Nói cách khác, nếu tôi loại bỏ mã API thông thạo mô tả mối quan hệ nhiều-nhiều, thì tôi thành công có thể khởi tạo DbContext.
Tôi có thể có bảng nhiều đến mức mà tôi cũng có thể tham khảo trực tiếp không?
Cảm ơn. Cả Người dùng và Nhóm được kế thừa từ bảng cơ sở, Hiệu trưởng và có một bảng khác, Quyền, chứa quyền cho cả người dùng và nhóm. Truy vấn LINQ cho rằng trông giống như: từ p trong ngữ cảnh.Quyền tham gia m trong ngữ cảnh.GroupMembers trên p.PrincipalId bằng m.GroupId nơi m.UserId.Equals (principalId) chọn p Tôi không hoàn toàn chắc chắn cách thực hiện truy vấn đó mà không trực tiếp tham chiếu bảng GroupMembers. – Eric
@Eric: Tôi khuyên bạn nên tạo một câu hỏi riêng cho việc này với nhiều chi tiết hơn về mô hình. – Slauma
@Eric Tôi có hoàn toàn cùng một vấn đề, có vẻ như vô lý mà api thông thạo có thể chỉ tạo ra các thực thể thay vì sử dụng những cái hiện có – Lu4