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