我正在使用 MVC 3 Razor (c#),在我看来,我正在显示一个用户只能更新 Name 属性的实体。
public class Product{
public Guid Id {get; set; }
public string Name {get; set;}
public string Type {get; set;}
}
为了防止在再次保存之前从数据库中加载整个对象,我使用了如下方法:
public void UpdateProduct(Guid id, Hashtable propertiesToUpdate) {}
在业务对象中,允许通过 AJAX 请求或表单 Post 更新实体的一组属性。(数据恒定性是使用时间戳完成的)。
我查看了其他方法,例如在检测到更改时使用 INotifyPropertyChanged 更新属性,但这似乎只有在您能够在请求之间保留实例或在进行更改之前加载整个实体时才有用(这似乎很重) .
我看到 NHibernate 在类似的想法中使用动态更新。这是否会导致 NHibernate 从数据库加载数据并在生成更新语句之前进行比较?
是否有最好的方法在请求之间保持正在编辑的对象(Session []?),或者更新单个属性的不太笨拙的方法(不移动到实体属性值模型)?