2010-07-26 40 views
9

tôi có thể lập bản đồ 1: 1 (one-to-one) bảng bằng trực giác, như thế này:Đối tượng lập bản đồ khuôn khổ mối liên hệ giữa quan điểm và bảng

Nhưng tôi không thể hiểu được làm thế nào để làm các bản đồ giống nhau giữa một cái bàn và một cái nhìn, như thế này

Trong sơ đồ này, hai thực thể được biểu diễn. Nếu tôi tự tạo ra một hiệp hội trong mô hình tổ chức nào, và thiết lập bản đồ của nó như thế này:

Sau đó, tôi nhận được lỗi:

Error 3021: Problem in Mapping Fragment starting at line 172: Each of the following columns in table view_EmployeeView is mapped to multiple conceptual side properties: view_EmployeeView.EmployeeID is mapped to Employeesview_EmployeeView.Employees.id, Employeesview_EmployeeView.view_EmployeeView.EmployeeID

Tại sao tôi không nhận được lỗi này với liên kết bảng bảng? Làm thế nào để giải quyết vấn đề này? Tôi muốn đặt một số thông tin tính toán trong một khung nhìn, nhưng rõ ràng tham gia vào nó khi tôi cần với hàm .Include().

Trả lời

5

Để ánh xạ liên kết giữa hai thực thể, khóa ngoại cũng không thể là khóa chính.

Điều bạn thực sự có ở đây là thừa kế TPT. Bạn có một lớp "cơ bản", cộng với các thuộc tính bổ sung tùy chọn trong bảng thứ hai (hoặc khung nhìn).

xem video này: http://msdn.microsoft.com/en-us/data/cc765425.aspx

Tận dụng tối "view" thực thể kế thừa từ các tổ chức nhân viên. Loại bỏ thuộc tính EmployeeID khỏi thực thể khung nhìn. Ánh xạ cột EmployeeID của dạng xem đến thuộc tính ID của nhân viên cơ bản. Bạn sẽ nhận được một ObjectSet duy nhất trong ObjectContext của bạn cho phân cấp này.

+0

Tốt, nó xác nhận mô hình và tôi có thể thấy thực thể của tôi trong một lớp dịch vụ miền nhưng nó không có định nghĩa cho this.ObjectContext.MyClass, Vì vậy, tôi không thể tìm cách quản lý điều này cho SL và cho một lần xem. Lớp thiết kế trông giống như các thực thể khác ngoại trừ kế thừa từ BaseClass thay vì Entity ... Năm 2014 :) –

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