各位:
大家都知道DataRow中有一个属性[RowState],是记录每行的变更状态。
现行若有一个列表ILIST<Customer>中有100条记录当然Ilist<Customer>的实例是可以从数据库中获取到,若期间列表中的Customer有变更过,
如何更好的获取对象的变更状态呢?我的想法是:
1.新增,当然没有问题,初始化时将状态置为ADD,
2.修改时,在每个属性中增加Set{if value!=Field state=state.Modified}
3.默认为UNCHANG问题:
主要是修改的状态,若在每个属性增加SET,则工作量太大了.
大家有没有更好的方法,获取对象实例的修改状态呢?
就像datarow中的Rowstate.代码如下:
public enum State
{
/// <summary>
/// 增加
/// </summary>
Added,
/// <summary>
/// 修改
/// </summary>
Modified,
/// <summary>
/// 未变更
/// </summary>
Unchanged
}
public class Customer
{
public State state { get; set; }
/// <summary>
/// 标识
/// </summary>
public int ID { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 年龄
/// </summary>
public string age { get; set; }
}
大家都知道DataRow中有一个属性[RowState],是记录每行的变更状态。
现行若有一个列表ILIST<Customer>中有100条记录当然Ilist<Customer>的实例是可以从数据库中获取到,若期间列表中的Customer有变更过,
如何更好的获取对象的变更状态呢?我的想法是:
1.新增,当然没有问题,初始化时将状态置为ADD,
2.修改时,在每个属性中增加Set{if value!=Field state=state.Modified}
3.默认为UNCHANG问题:
主要是修改的状态,若在每个属性增加SET,则工作量太大了.
大家有没有更好的方法,获取对象实例的修改状态呢?
就像datarow中的Rowstate.代码如下:
public enum State
{
/// <summary>
/// 增加
/// </summary>
Added,
/// <summary>
/// 修改
/// </summary>
Modified,
/// <summary>
/// 未变更
/// </summary>
Unchanged
}
public class Customer
{
public State state { get; set; }
/// <summary>
/// 标识
/// </summary>
public int ID { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 年龄
/// </summary>
public string age { get; set; }
}
{
public Customer obj{get;set;}
public MyType status{get;set;}
}或者public class MyList<T>
{
public T obj{get;set;}
public MyType status{get;set;}
}
无聊地纠缠原本内聚且合理的业务实体干什么呢?
以上的方法应该达不到吧。
你只知道MyList是否有变更,但并不知道其中的内容变更过。我主要的是在数据保存List时,节约时间,比如,若LIST中有500条记录,若只有一条有变化,我只需要保存一条即可。而不需要循环每条记录,由Isession.Save(Customer)去判断。
DataSet的批量更新也只是封装了的,内部也有循环处理的吧。