在保存到数据库之前,检查类是新实例还是至少填充了一个属性
本文关键字:填充 属性 一个 保存 实例 检查 新实例 数据库 | 更新日期: 2023-09-27 18:34:11
我认为这很容易,但我想不出一个好方法。
用户提交网络表单。根据提交的信息,我构建了三个类,并从接收到的数据中分配了它们的属性:
UserInfo userInfo = new UserInfo();
UserAddress userAddress = new UserAddress();
UserEmployer userEmployer = new UserEmployer();
根据提交的信息,一些类最终填充了属性,而有些则没有。
例如,检查userInfo类是否最终分配了属性的最佳方法是什么?如果某个特定对象没有分配任何实际属性并且所有属性都设置为 null 或 ",我不想将它保存到数据库中。
我只想保存最终至少分配了一个不动产的对象。
使用NHibernate将数据保存到数据库
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;
}
}
}
您可以使用反射并循环访问属性,单独检查每个属性。
var type = userInfo.GetType();
var properties = type.GetProperties();
或者它们是字段而不是属性
var fields = type.GetFields();
然后,您可以检查每个值是否为 null 或某个值。
尝试创建一个所有三个类都实现的接口,提供一个沿 shouldSave()
或 hasSetProperties()
行的函数,该函数检查每个数据字段,如果定义了其中任何一个,则返回 true。
甚至可能是一种以可以轻松传递到 NHibernate 的形式获取所有数据的方法。
如果您
没有任何可以分配给该对象的属性的值,请不要创建该对象的实例。
除此之外,"UserAddress"可能不是一个实体,而是一个值对象。