【发布时间】:2013-01-04 02:42:01
【问题描述】:
我正在使用 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[]?)的最佳方法,或者更新单个属性的不太笨拙的方法(不移动到实体属性值模型)?
【问题讨论】:
-
stackoverflow.com/questions/1243390/… 似乎从 NHibernate 方面解决了类似的想法。
-
最后我使用了一个内部列表 UpdatedPropertiesList 并且数据存储的更新调用在更新之前检查了这个列表。无需先加载对象即可享用美食。
标签: c# asp.net-mvc nhibernate