Tôi có một thực thể người chứa một địa chỉ như một đối tượng giá trị:đối tượng giá trị Null trong NHibernate
public Person()
{
WithTable("Person");
Id(x => x.Id);
Component<Address>(x => x.Address, a =>
{
a.Map(x => x.Address1);
a.Map(x => x.Address2);
a.Map(x => x.Address3);
a.Map(x => x.Town);
a.Map(x => x.Postcode);
});
}
Nó khẳng định trong các tài liệu NHibernate rằng nếu tất cả các thuộc tính của một đối tượng giá trị (Address1, Address2 vv) là null, toàn bộ thành phần sẽ được ánh xạ dưới dạng null (tức là Person.Address sẽ là null). Điều này khiến tôi gặp vấn đề trong trường hợp tất cả các trường địa chỉ đều trống vì trong các trang của tôi mà tôi có thể có (Tôi đang làm ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
Điều này vi phạm ngoại lệ tham chiếu null. Vì vậy, tôi đang tìm một cách sạch sẽ để thiết lập địa chỉ như là một địa chỉ mới() thay vì null nếu tất cả các lĩnh vực có sản phẩm nào khi tôi tải một người từ cơ sở dữ liệu mà không làm nó bằng tay. Tôi đã giảm giá các ý tưởng sau đây:
Làm kiểm tra null trong quan điểm của tôi (yuk, khủng khiếp)
Làm lĩnh vực cơ sở dữ liệu không nullable (Tôi đang làm việc với một cơ sở dữ liệu di sản)
Bất cứ ai bất kỳ ý tưởng ?
Trở nên khá xấu xí ngay khi bạn thực sự cần chỉnh sửa địa chỉ trong giao diện người dùng, không chỉ hiển thị địa chỉ, phải không? – alex
Đúng, có đề xuất tốt hơn? –
Ý tưởng tuyệt vời, cảm ơn! Sửa đổi trình truy cập thuộc tính Address được ánh xạ thực tế để cho phép nhận và thiết lập như bình thường, nhưng sử dụng kiểm tra null của bạn trong phần "Address ?? new Address();" công trinh. Bây giờ tôi có thể tải và chỉnh sửa địa chỉ ngay cả khi chúng trống, không sửa đổi chế độ xem của tôi và chế độ ngủ đông không bị nhầm lẫn. –