我有以下型号:
public class Customer
{
public int Id {get; set;}
public string Name {get; set;}
public Address Address {get; set;}
}
public class Address
{
public int Id {get; set;}
public string Street {get; set;}
public string HouseNo {get; set;}
}
我有一个带有绑定源的表单,绑定到Customer
对象。在这个表单上,我有一个地址usercontrol及其自己的bindingsource。此用户控件公开Address
绑定到Customer.Address
的属性。
数据绑定工作正常,因为当我加载现有记录时,数据显示正确。
问题在于,当我创建一个新的Customer
对象时,Address
为空,即使用户在地址字段中输入数据,地址的bindingsource也是DbNull。
如果我将以下构造函数添加到Customer
类:
public Customer()
{
this.Address = new Address();
}
地址用户控件的更改并反映在绑定源中,因此也在Customer.Address
中。
但是,使用上面的构造函数为Address
创建一个空Customer
对象,如果用户没有输入有效地址(输入地址是可选的)并保存客户, EF将导致问题,因为它尝试使用空值保存空地址对象。
那么在添加新父项时设置子绑定源的正确方法是什么?
答案 0 :(得分:0)
如果我正确地阅读您的问题,听起来一切正常,除非用户在创建新客户后尝试保存时 输入任何地址信息地址对象包含空值。
我建议您只需在保存时进行验证,以便在地址信息丢失或不正确时不允许用户执行保存操作。