Khi tạo các lớp POCO chứa các bộ sưu tập kiểu nguyên thủy và được tiếp tục bằng EF Code Đầu tiên, lời khuyên tốt nhất mà tôi đã tìm được cho đến nay là tạo một lớp mới có ID cộng với loại nguyên thủy:Mã khung thực thể đầu tiên và các bộ sưu tập của các loại nguyên thủy
Entity Framework and Models with Simple Arrays
Nếu bây giờ tôi có một vài lớp học đòi hỏi tính chất của loại ObservableCollection<string>
và thay thế chúng với ObservableCollection<EntityString>
(nơi EntityString
là một kiểu tùy chỉnh với một Id và một tài sản string), tôi kết thúc với một bảng EntityString
có nhiều cột khóa ngoài, một cho mỗi thuộc tính loại ObservableCollection<EntityString>
trên tất cả các loại cụ thể với các thuộc tính như vậy.
Điều này dẫn đến các cột khóa ngoài chủ yếu là rỗng trong bảng EntityString
.
Một cách tiếp cận sẽ là tạo một lớp con của EntityString
và sử dụng mô hình Table per Type cho các lớp con đó. Tuy nhiên, điều đó đòi hỏi phải thực hiện các thay đổi khó xử đối với mô hình đối tượng đơn giản để thích ứng với Entity Framework.
Câu hỏi:
- Sản phẩm Encapsulating gõ cách tốt nhất để quản lý
Collection<PrimitiveType>
? - Nếu vậy, các chuyên gia và con của việc cho phép nhiều (nhiều) cột khóa ngoài so với việc tạo bảng tùy chỉnh cho mỗi loại (với chi phí của một mô hình khó xử) là gì?
Giải pháp này giả định rằng ';' (hoặc bất kỳ ký tự ma thuật nào khác được chọn) không phải là đầu vào hợp lệ cho chuỗi cơ sở, đúng không? –
Có thể thể hiện cấu hình thông thạo 'WithOptional' bằng thuộc tính lớp thay thế không? Tôi hiểu rằng họ là lựa chọn thay thế cho nhau, nhưng đã không tìm thấy tài liệu hoàn chỉnh về chủ đề này cho đến nay. –
Nếu ánh xạ mặc định không tạo mối quan hệ tùy chọn, bạn không thể thay đổi nó bằng chú thích dữ liệu. Chú thích dữ liệu phải được đặt trên một số thuộc tính nhưng trong trường hợp này không có thuộc tính nào trong thực thể phụ thuộc để sử dụng. –