我正在开发一个MVC3项目,我注意到当从UI更新该记录时,数据库中的某些字段被设置为null。发生这种情况是因为帖子上的表单上没有这些字段。我知道这可以通过为这些添加HiddenFor条目来解决,但这不是一个很好的方法,因为还需要在那里添加任何新字段。我希望能找到更好的解决方案。
关于项目结构的一些细节:
我们有完全匹配EF实体的DTO以简化映射。因此,DTO拥有实体和实体中的每个领域。数据库。我们使用DTO作为模型。
控制器将DTO传递给服务层。服务层将DTO映射到其各自的实体(使用AutoMapper),并将其传递给持久层。持久层实际上是使用DbContext来保存更改。
假设我们有一个带有Name成员和FolderPath成员的Client DTO,以及一个只在其表单上有Name成员的视图。表单发布,FolderPath为null。该空值一直持续到持久层中的更新。在某个地方,我必须指定我不希望该特定值覆盖数据库中的内容。
从我收集的研究结果大约一个小时开始,一种方法可能就是......
这是一种有效的方法吗?有没有更好或更常见的方法来解决这个问题?
答案 0 :(得分:2)
我会使用选项1并具有view / html格式的特定模型。这是最干净的解决方案,恕我直言。
还有一个主要问题,其他方式让你对黑客开放...即如果我知道你的模型上的其他字段/属性,我可以制作一个包含该信息的表格帖子并将其保存。