1

我认为这将是一个容易的,但我想不出一个好的方法来做到这一点。

用户提交网络表单。根据提交的信息,我构建了三个类并根据接收到的数据分配它们的属性:

UserInfo userInfo = new UserInfo();
UserAddress userAddress = new UserAddress();
UserEmployer userEmployer = new UserEmployer();

根据提交的信息,某些类最终会填充属性,而有些则不会。

例如,检查 userInfo 类是否最终分配了属性的最佳方法是什么?如果没有分配任何实际属性并且所有属性都设置为空或“”,我不想将特定对象保存到数据库中。

我只想保存最终分配了至少一个不动产的对象。

附言。使用 NHibernate 将数据保存到数据库

4

4 回答 4

3
public interface IPersistable{
    bool ShouldPersist {get;}
}

public class MyPersistable:IPersistable
{
    private bool _persist;

    public MyPersistable(){}

    public string MyValue{
        get{
            return _myValue;
        }
        set{
            _persist = true;// or validate with !IsNullOrEmpty() first
            _myValue = value;
        }
    }

    public bool ShouldPersist{
        get{
            return _persist;
        }
    }
}
于 2012-05-15T18:51:11.493 回答
1

您可以使用反射并循环遍历属性,分别检查每个属性。

var type = userInfo.GetType();
var properties = type.GetProperties();

或者如果它们是字段而不是属性

var fields = type.GetFields();

然后您可以检查每个是否为 null 或某个值。

于 2012-05-15T18:44:45.703 回答
0

如果您没有任何可以分配给该对象属性的值,请不要创建该对象的实例。

除此之外,“UserAddress”可能不应该是一个实体,而是一个值对象。

于 2012-05-15T18:47:25.630 回答
0

尝试创建一个所有三个类都实现的接口,提供一个类似shouldSave()or的函数hasSetProperties(),它检查每个数据字段并在定义了任何一个时返回 true。

甚至可能是一种以您可以轻松传递给 NHibernate 的形式获取所有数据的方法。

于 2012-05-15T18:41:07.870 回答