如何使用Web API 2在MVC中进行模型验证?

时间:2016-11-27 10:12:46

标签: c# entity-framework wcf asp.net-mvc-4 asp.net-web-api2

我是Web API2的新手。我的解决方案有3个项目(MVC,WebAPI2,EF的类库)。我有些疑惑。

1)将WebAPI和MVC作为单独的项目保存,以分离关注点。这是可取的还是最好将两者都保存在单个项目中?

2)使用WCF,我们可以在MVC中使用服务引用来利用所有数据库类模型,这样在MVC中很容易构建控制器并添加模型验证。如何使用Web API2,因为我不会在MVC中为DB类引用。我是否需要在MVC项目中创建重复的DB类模型以用于脚手架目的和模型验证目的?

1 个答案:

答案 0 :(得分:0)

您的标题让我感到困惑,但模型验证可以通过验证属性完成。我会尝试回答你问题正文中的问题。

这取决于您希望如何使用MVC和WebApi项目。 请记住,如果他们在同一个项目中,您可以让自己更轻松,这样您就不必过多担心RPC了。但谁知道你打算如何使用它们。

WebAPI通常用于与您自己以外的系统集成。因此,(de)序列化和请求/响应处理是高度可定制的。用于WebAPI控制器的模型通常被指定或提供给接口要与之集成的系统。

用于WebAPI或MVC控制器的模型应与ORM的实体模型分开。您希望这样做的原因是实体模型中的数据并不总是适合视图的使用或从视图发送回控制器的视图模型的验证。

在这两种情况下,连接WebAPI和MVC控制器的模型都应该设计为适应您的用例,并且应该与实体模型完全分离以实现持久性。

所以为了回答你的第二个问题,你可能只需要一组实体模型,可能只需要一个dbcontext实现,但是在自己的项目中拥有所有这些,这样如果你有单独的MVC和WebAPI项目,它们都依赖于EF项目。