如何使用绑定源添加新对象?

时间:2015-02-20 12:39:40

标签: c# winforms entity-framework data-binding

我有以下型号:

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将导致问题,因为它尝试使用空值保存空地址对象。

那么在添加新父项时设置子绑定源的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读您的问题,听起来一切正常,除非用户在创建新客户后尝试保存时 输入任何地址信息地址对象包含空值。

我建议您只需在保存时进行验证,以便在地址信息丢失或不正确时不允许用户执行保存操作。