2009-12-18 35 views
12

Việc thiết kế lại cho một cơ sở dữ liệu lớn tại công ty chúng tôi sử dụng rộng rãi các khóa chính kết hợp trên cơ sở dữ liệu.Các khóa DB tổng hợp với Khung thực thể 4.0

Quên tác động hiệu suất, điều này có gây ra bất kỳ khó khăn nào khi làm việc với db này trong Entity Framework 4.0 không? Cấu trúc cơ sở dữ liệu dường như không thay đổi và tôi không tìm kiếm cuộc tranh luận "triết học" nhưng những tác động thực tế là gì?

Theo Jeremy Miller, "Khóa tổng hợp làm cho bất kỳ loại ánh xạ đối tượng/quan hệ và sự kiên trì nào nói chung khó hơn". nhưng anh ấy không thực sự nói tại sao. Đây có phải là relavent để Entity Framework 4.0 xử lý các khóa như thế nào?

Trả lời

13

Không, EF4 chỉ hỗ trợ các phím tổng hợp.

Sự cố là bảng có khóa thay thế và phím tổng hợp. Bạn chỉ có thể đặt một phím trên mỗi mô hình; khóa đó có thể có nhiều trường, nhưng bạn chỉ có thể có một trường từ quan điểm thiết kế. Không chắc chắn về việc chỉnh sửa thủ công ánh xạ xml hoặc mã chỉ.

Bạn có thể đặt trường làm Nhận dạng và không phải là khóa nếu bạn cần khóa tổng hợp và thay thế trên cùng một bảng. Trường Identity (Id) sẽ không được sử dụng bởi ObjectContext hoặc ObjectStateTracker nhưng sẽ tăng lên và có thể truy vấn được.

8

Tôi gặp sự cố với EF4 và các phím tổng hợp. Nó không hỗ trợ các cột được sử dụng như các thành phần trong nhiều hơn một khóa trong bảng kết nối.

Xem câu hỏi trước đây của tôi Mapping composite foreign keys in a many-many relationship in Entity Framework để biết thêm chi tiết. Các hạt của nó là khi bạn có bảng kết nối (mô tả mối quan hệ nhiều-nhiều) nơi cả hai mối quan hệ sử dụng khóa chung, bạn sẽ gặp lỗi như

Lỗi 3021: Sự cố trong ánh xạ mảnh ...: Mỗi phòng trong số cột sau trong bảng lần xem trang ánh xạ tới nhiều thuộc tính bên khái niệm: PageView.Version được ánh xạ tới (PageView_Association.View.Version, PageView_Association.Page.Version)

Cách duy nhất xung quanh nó là trùng lặp cột đánh bại mục đích có nó ở đó.

Chúc may mắn!

+6

Vô cùng khó chịu. –

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