Đối với một loại phức tạp trong khuôn khổ thực thể có tính chất nullable chỉ, tại sao là một cái gì đó như sau đòi hỏi các loại phức tạp được khởi tạo:loại Complex của Nullable Values
[ComplexType]
public class Address {
public string Address1 { get; set; }
}
public class Customer {
[Key]
public int CustomerId {get;set;}
public Address Address {get;set;}
}
Cụ thể hơn, nếu bạn không khai báo và gõ địa chỉ, bạn nhận được một "giá trị Null cho thành viên không nullable. Thành viên: 'Địa chỉ'." Theo số this question.
Chừng nào tất cả các thuộc tính trong các loại hình phức tạp là nullable, tại sao nó rằng khuôn khổ thực thể đòi hỏi một thể hiện của Địa chỉ? Vì Address1 là nullable, tại sao nó không thể giả định rằng và tạo bảng (và cột Address_Address1) và giá trị null trong hàng như thể tôi đã tạo ra một cá thể của Address với một null Address1?
Hoặc có cài đặt thuộc tính/thông thạo tôi có thể áp dụng để đạt được điều đó không?
Có thể bạn không được cấp phát bộ nhớ cho địa chỉ bằng toán tử null. –
Đây là một tính năng thực sự tồi tệ của EF. Sử dụng sự phản chiếu trên một đối tượng Address, EF có thể dễ dàng tìm ra những cột nào tạo ra khi tạo bảng. Nó không cần phải có một thể hiện của Address từ thực thể để làm việc đó. Và về việc tạo/cập nhật thực thể, nếu thuộc tính ComplexType là null, thì việc thiết lập các cột đó trong cơ sở dữ liệu thành null là gì? Đây sẽ là một tính năng bổ sung dễ dàng cho phiên bản tiếp theo của EF IMO. – Ibraheem