Tôi có một loại thực thể được gọi là Hình ảnh kế thừa từ Ấn phẩm (có 5 loại ấn phẩm khác, tất cả đều chia sẻ 10 thuộc tính chung). Thật không may, Bảng Hình ảnh trong DB của tôi bao gồm 4 cột nhị phân với dữ liệu cho 4 phiên bản của hình ảnh ở các độ phân giải khác nhau, do đó, có 4 thuộc tính của loại hình ảnh EF: BinOriginal, BinHiRes, BinLowRes, BinThumbnail, có chứa lượng dữ liệu rất lớn.Bảng phân tách một loại thực thể được kế thừa?
Điều này ảnh hưởng đến hiệu suất. Tôi không muốn lấy tất cả các dữ liệu nhị phân khi tôi chỉ tạo ra một loạt các liên kết hình ảnh, ví dụ.
Vì vậy, tôi đã cố gắng bàn tách, đặt 4 lĩnh vực nhị phân thành một thực thể ImageFile mới a la: http://blogs.msdn.com/b/adonet/archive/2008/12/05/table-splitting-mapping-multiple-entity-types-to-the-same-table.aspx
tôi đã chắc chắn bảng-bản đồ chính xác, bổ sung các hiệp hội 1-1 và bao gồm ràng buộc tham chiếu, nhưng tôi gặp phải lỗi này:
Error 3033: Problem in mapping fragments starting at line 2731:EntitySets
'ImageFiles' and 'Publications' are both mapped to table 'Images'. Their primary
keys may collide.
... có vẻ như có vấn đề trong đó bảng đang được phân tách có liên quan đến mối quan hệ kế thừa.
tôi đã cố gắng kế thừa kiểu ImageFile EF mới từ bản, nhưng sau đó tôi nhận được một lỗi:
Problem in mapping fragments starting at lines 2332, 2374:Two entities with
different keys are mapped to the same row
HỎI Có cách nào để khắc phục điều này, hoặc không thực tế là tôi cần Image EF loại để kế thừa từ xuất bản ngăn cản tách ra các lĩnh vực khác thành một loại mới?
Bạn có thể thay đổi giản đồ cơ sở dữ liệu không? I E. tạo một bảng riêng cho hình ảnh? –
Vâng: đó là những gì tôi đã làm bây giờ như là một "work-around" (nó thực sự là một thiết kế DB tốt hơn, nhưng nó đã được nhiều hơn nữa làm việc cho rằng DB đã được sản xuất). Câu hỏi của tôi về việc chia bảng vẫn tồn tại - nó vẫn là một khía cạnh của EF mà tôi muốn hiểu. Nếu bạn có thể xác minh/tài liệu rằng nó không thể tách một bảng là một kiểu con trong một mối quan hệ thừa kế, điều đó sẽ đủ cho tôi chấp nhận một câu trả lời. – Faust
OK, đã hiểu, nhưng tôi không chắc liệu mình có đi sâu vào đó không :). –