2012-11-29 32 views
7

tôi đang xác định một số mô hình của mình bằng cách sử dụng Mã EF5 Đầu tiên. Tôi có những ba lớp mẫu với một mối quan hệ nhiều-nhiều:Quan hệ nhiều-nhiều trong Breeze

public class Team 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Team_Id { get; set; } 
     [MaxLength(150)] 
     public string TeamName { get; set; } 

     public virtual ICollection<User> Users { get; set; } 
     [public virtual ICollection<Role> Roles { get; set; } // 1 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

public class User 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int User_Id { get; set; } 
     [MaxLength(150)] 
     public string LoginName { get; set; } 
     [MaxLength(150)] 
     public string Nachname { get; set; } 
     [MaxLength(150)]   
     public string Vorname { get; set; } 

     public virtual ICollection<Team> Teams { get; set; } 
     public virtual ICollection<Role> Roles { get; set; } // 2 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

public class Role 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Role_Id { get; set; } 
     [MaxLength(50)] 
     public string RoleName { get; set; } 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

Như bạn có thể thấy có một mối quan hệ nhiều-nhiều giữa các nhóm và người sử dụng. Tôi đang cố gắng làm việc này hàng giờ liền. Tôi luôn nhận được ngoại lệ JS với thông báo lỗi "thuộc tính điều hướng xấu" trong VS 2012. Tại đầu tiên tôi nghĩ đó là Nhóm/Người dùng ICollections trong Người dùng/Nhóm-Class nhưng không phải. Vấn đề có vẻ là hai cuộc gọi 1) và 2). Tôi e tôi loại bỏ hoặc một trong số họ nó hoạt động. Đổi tên một và giữ cho cả hai trường hoạt động vẫn phát ra lỗi. Có thể ai cũng có một ý tưởng về những gì đang diễn ra.

Rất cám ơn

Câu hỏi này đã được đăng bởi SirSmackalot trên các diễn đàn IdeaBlade của chúng tôi. Tôi đang reposting câu hỏi và câu trả lời ở đây vì tôi nghĩ rằng nó sẽ hữu ích cho cộng đồng Breeze Stack Overflow.

Trả lời

14

Breeze chưa hỗ trợ quan hệ nhiều-nhiều, nơi bảng ánh xạ bị ẩn. Vấn đề là Breeze phụ thuộc vào khái niệm "khóa ngoài" để theo dõi các mối quan hệ, và điều này không có sẵn cho các mối quan hệ nhiều-nhiều được định nghĩa không có tải trọng trong Khuôn khổ thực thể.

Công việc là thay đổi mối quan hệ nhiều-nhiều thành hai quan hệ 1-nhiều với một thực thể liên kết. Về cơ bản, chỉ cần trưng ra bảng ánh xạ như một loại thực thể khác. Ví dụ:

Team - TeamUser (1-to-many)

người dùng - TeamUser (1-to-many)

Chúng tôi có kế hoạch để hỗ trợ Entity Framework chính thức nhiều-nhiều mối quan hệ trong bản phát hành sau nhưng chúng tôi cần ưu tiên điều này. Vì vậy, vui lòng thêm/bỏ phiếu cho yêu cầu tính năng này bằng cách sử dụng cơ chế phản hồi trên trang web (https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/filters/top). Điều này giúp chúng tôi quyết định những tính năng nào cần tập trung vào tiếp theo.

+7

Tôi khuyên mọi người nên tránh triển khai nhiều người. Khái niệm này là tốt nhưng trong thực tế nó hầu như luôn luôn sụp đổ. Theo kinh nghiệm của tôi, bảng lập bản đồ cuối cùng có được một cột. Có lẽ đó là một ngày liên kết hoặc một userId hoặc một số thực tế khác mô tả cách hai bên đã đến với nhau. Khoảnh khắc tôi thêm rằng "trọng tải", nhiều-nhiều sẽ sụp đổ và tôi phải làm cho thực thể ánh xạ/liên kết rõ ràng. Tôi phải tranh giành để theo dõi tất cả các mã phụ thuộc vào m-to-m ... mã có thể khó tìm. Tôi luôn ước tôi đã làm cho họ trở thành thực thể lập bản đồ từ 1 đến m + ngay từ đầu. – Ward

+0

truy vấn dễ dàng như thế nào với một thực thể liên kết như vậy để có được tất cả người dùng từ một nhóm? – daniel

+3

Vẫn không có gì về điều này? – Adaptabi

Các vấn đề liên quan