Tôi có hai bảng:Entity Framework 6 tùy chọn một trong những cách quan hệ
Client
------------------------
Id (string) <-- PrimaryKey
Name (string)
Number (int)
Department:*
------------------------
Id (int) <-- Primary key
Name (string)
ClientNumber (int?)
Client (Client, virtual)
.....
Bây giờ tôi muốn tạo ra một mối quan hệ không bắt buộc từ Departmant cho khách hàng (sử dụng ClientNumber). Tôi đã tạo một thuộc tính ảo trong lớp Department (Client) và bây giờ tôi cần cấu hình quan hệ bằng EntityTypeConfiguration.
Có không có khóa ngoài được định cấu hình trong cơ sở dữ liệu và tôi không thể thay đổi cơ sở dữ liệu. Tôi cũng không thể thay đổi Entity (class) Client.
Vì vậy, tôi cần phải thông báo cho EntityFramework rằng ClientNumber trong lớp Department có liên quan (tùy chọn) đến thuộc tính Number trong lớp Client.
Nhưng tôi không thể tìm ra cách để nói với EF rằng của Bộ ClientNumber có liên quan đến Số tài sản của khách hàng, chứ không phải khóa chính của khách hàng. (mà không thay đổi lớp thực thể của Khách hàng)
chỉnh sửa: Số Số thuộc tính trên Máy khách là duy nhất cho mỗi mục nhập.
Mối quan hệ nên kết quả trong một tuyên bố sql như thế này:
SELECT .....
FROM Department D LEFT OUTER JOIN Client C ON (D.ClientNumber = C.Number)
Thật dễ dàng để làm bằng này tham gia trong LINQ, nhưng nó sẽ là tuyệt vời để chỉ:
dbContext.Departments.Include(d => d.Client)
sử dụng một ảo tài sản trên lớp Sở chứa Khách hàng (nếu có)
Nó vẫn không thể tạo quan hệ trong khung thực thể mà không sử dụng các cột khóa chính. Nếu bạn muốn nhận ra mối quan hệ đó, bạn phải bao gồm cột Id khách hàng làm cột khóa ngoài. Nếu đó là vì lý do nào đó không muốn, bạn có thể tạo một khung nhìn để mô hình hóa mối quan hệ đó. –