2012-03-09 6 views
7

Tôi có một Người dùng thực thể. Mỗi người dùng được cho là có nhiều bạn bè và giáo viên. Với EF Code Đầu tiên, tôi hơi bối rối về cách đạt được những gì tôi muốn. Tôi thấy các ví dụ về tự tham khảo, nhưng không phải là nhiều-nhiều. Ví dụ:Khuôn khổ thực thể nhiều người tự tham khảo

public class Employee 
{ 
    #region Properties 

    public int EmployeeID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public int? ManagerID { get; set; } 
    public Employee Manager { get; set; } 

    #endregion 
} 

và modelBuilder:

modelBuilder.Entity<Employee>(). 
     HasOptional(e => e.Manager). 
     WithMany(). 
     HasForeignKey(m => m.ManagerID); 

Làm thế nào để tạo ra một thực thể có tự tham chiếu trong trường hợp của tôi, nơi có bạn bè (nếu a là người bạn với b này có nghĩa là b là bạn với a) và giáo viên (nếu là giáo viên của b, b là sinh viên của a)?

Xin lỗi nếu đã tồn tại một chuỗi tương tự. Bất kỳ trợ giúp nào được đánh giá cao.

+0

Làm thế nào về điều này? http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx –

+0

Ví dụ chỉ hiển thị nhiều nhiều người, không tự tham khảo, điều này khá dễ dàng và thậm chí không yêu cầu một người xây dựng mô hình. Dù sao cảm ơn bạn đã giúp đỡ của bạn. – Unknown

Trả lời

10

Ok, vì rất nhiều người đã trả lời câu hỏi này;), tôi đã tìm kiếm thêm một chút và tôi đã tìm ra giải pháp cho trường hợp của mình. Thực thể trông giống như:

public class User 
{ 
    public int ID { get; set; } 
    public string UserName { get; set; } 

    public virtual ICollection<User> Friends { get; set; } 
} 

các modelBuilder:

modelBuilder.Entity<User>() 
       .HasMany(x => x.Friends) 
       .WithMany(); 

Và cuối cùng tôi đã thực hiện phương pháp helper kết bạn và BecomeTeacherStudent, mà chắc chắn rằng khi bạn trở thành người bạn với một người nào đó anh trở thành bạn với bạn (và các điều tương ứng cho giáo viên-học sinh).

+0

Điều này có thể sẽ cung cấp cho bạn một số bảng và tên khóa lạ, xem http://msdn.microsoft.com/en-us/data/jj591620.aspx để biết chi tiết về cách giải quyết. – bbodenmiller

+0

Có cách nào để định cấu hình điều này bằng 'DataAnnotations' không? – Shimmy