Controller应该与自动生成的模型直接交互吗?

时间:2015-05-25 16:27:04

标签: c# asp.net-mvc entity-framework

我正在使用MVC和Entity Framework开展项目。目前,我正在做的是我使用控制器直接在其Action方法中使用实体框架自动生成的模型执行“TryUpdateModel”。

我的问题是,这是一个好的/推荐的方法吗?当然,模型I仍然传递给存储库类以进行进一步处理和保存。

我很好奇。如果我为自动生成的模型创建“包装”模型怎么办? ViewModel可以成为这个“包装”模型吗?

2 个答案:

答案 0 :(得分:1)

你的想法很好。最好使用包装器模型而不是自动生成的模型。因为自动生成的模型具有DAO(数据访问对象)的作用,有时不适合您对View Model的需求。

实际的视图模型应该是包装模型。因为有时您只需要DAO的自动生成的模型)。

答案 1 :(得分:1)

您应该避免直接更新模型或确保明确设置允许绑定的属性。原因是您使用的方法是将代码打开到称为重叠的漏洞。

总之,重叠是黑客修改表单以注入他们不应该更新的属性。见这里:http://odetocode.com/blogs/scott/archive/2012/03/11/complete-guide-to-mass-assignment-in-asp-net-mvc.aspx

除此之外,它与任何其他设计决策一样。两种方式都有一些优点和缺点。如果按照自己的方式执行,则可以减少编写/维护的代码。但是,一旦您需要进行更改,您的灵活性就会降低,因为表单和模型需要匹配,这并不总是构建表单的最佳方式。