我无法想到在控制器Action中重新创建数据库对象的最佳方法.
我想使用ModelBinder,因此在我的操作中,我可以通过参数访问对象,而不必重复代码以基于标识符参数从数据库中获取对象.所以我想让一个ModelBinder执行对dataaccess层的调用以获取原始对象(或者如果数据库中不存在则创建一个新对象),然后将任何属性绑定到数据库对象以更新它.但是我读过ModelBinder不应该进行数据库查询(本文的第一条评论).
如果ModelBinder不应该执行数据库查询(所以只使用DefaultModelBinder),那么具有其他db对象属性的数据库对象呢?永远不会分配这些.
在用户编辑对象后保存对象(在视图中可以编辑1或2个属性),ModelBinded对象将丢失数据,因此保存它将导致数据库中的数据被无效值覆盖,或者不是 - NULL约束失败.
那么,最好的方法是从数据库中获取控制器操作中的对象,该数据库与从视图中发回的表单数据绑定在一起?
请注意我使用NHibernate.