我在尝试思考在控制器操作中重新创建数据库对象的最佳方法时遇到了麻烦。
我想利用ModelBinders,这样在我的操作中,我可以通过参数访问对象,而不必重复使用代码根据标识符参数从数据库获取对象。因此,我想使用一个ModelBinder,它执行调用数据访问层以获取原始对象(如果不存在于数据库中,则创建一个新对象),然后将任何属性绑定到数据库对象以更新它。但是,我已经读到过ModelBinders不应该进行数据库查询(这篇article的第一条评论)。
如果ModelBinder不应执行数据库查询(因此只使用DefaultModelBinder),那么具有其他db对象属性的数据库对象怎么办?这些属性永远不会被分配。
在用户编辑对象之后保存它(视图中可编辑的1或2个属性),ModelBinded对象将缺少数据,因此将其保存为它将导致数据库中的数据被覆盖为无效值,或者NOT-NULL约束失败。
那么,从视图返回的表单数据绑定到控制器操作中来自数据库的对象的最佳方法是什么?
注意我正在使用NHibernate。