2009-06-01 6 views
5

Nếu tôi có mối quan hệ nhiều-nhiều giữa Người dùng và Vai trò và tôi có thể hiện một thực thể Người dùng và một số Vai trò Id tôi có thể chèn mối quan hệ giữa hai loại thực thể mà không có bất kỳ Vai trò nào khác dữ liệu và không thực hiện lựa chọn trên Vai trò trước?Làm thế nào để bạn chèn một thực thể cho một mối quan hệ nhiều-nhiều? (thực thể khung)

Cập nhật:

tôi có thể không có được đủ rõ ràng. Tôi không có một thể hiện của một vai trò, chỉ có vai trò id. Có thể tạo mối quan hệ giữa Người dùng và Vai trò mà không cần điền một đối tượng Vai trò từ cơ sở dữ liệu trước không?

Trả lời

9

Yes nếu bạn có các ID và bạn cần phải liên hệ chúng

Bạn sẽ có thể làm được điều này (pseudo code)

// how you get this doesn't matter so long as it is in the Context 
User user = ...; 
Role role = new Role {Id = 2}; 
// role 2 is in unchanged state 
ctx.AttachTo("Roles", role); 
// role 2 is unchanged + added relationship between user and role 2 
user.Roles.Add(role); 
ctx.SaveChanges(); 

Mấu chốt ở đây là AttachTo đặt một thực thể vào ObjectState người quản lý ở trạng thái không thay đổi. Vì vậy, miễn là bạn không cần phải sửa đổi thực thể đó, và chỉ sử dụng nếu để xây dựng mối quan hệ, bạn thậm chí không cần phải biết tất cả các giá trị tài sản, PK là đủ.

Khi bạn đã đính kèm, bạn có thể xây dựng mối quan hệ.

Hope this helps

Cheers Alex

+0

Cảm ơn, tôi sẽ thử nó và cho bạn biết làm thế nào nó đi. – adam0101

+0

Tuyệt vời, nó phù hợp với tôi. Cảm ơn –

2

Nếu bạn không sử dụng databinding, chắc chắn. Nhiều người được ánh xạ dưới dạng danh sách tham chiếu với nhau. User.Roles.Add (Role ...) sẽ ổn.

+1

Tôi không có một thể hiện của một vai trò, tôi chỉ có một vai trò id. Nó có hoạt động nếu tôi tạo một Role mới và chỉ định id không? Nó sẽ cố gắng để chèn nó vào cơ sở dữ liệu? Hy vọng rằng không, vì nó đã tồn tại ở đó. – adam0101