使用Web服务作为数据访问层开发ASP.NET MVC应用程序

时间:2014-02-28 09:26:32

标签: c# asp.net-mvc web-services wcf asp.net-mvc-5

以下是该方案:

我们拥有一个完整的功能数据库,包含数百个表和一个完整的自行开发的WCF(Windows Communication Foundation)Web服务API。

我的任务是使用此服务开发 ASP.NET MVC应用程序以进行数据交互。

为了达到这个目的,我知道所有的逻辑和服务消耗将在我的应用程序的控制器上,顺便说一下, MVC 5

问题在于,由于整个数据库已经投入生产,我没有一个模型可以构建所有的视图和控制器,我不知道是否有办法使用Web服务提供的类作为我的实际模型。

ASP.NET MVC依赖于EntityFramework和类定义的模型,但是按照 DataBaseFirst 方法的建议将整个数据库复制到EF类中根本不可行,因为数据库结构是如此巨大的,我并不是真的需要所有这一切来完成我的任务。

这是可能的还是开发常规ASP.NET应用程序会更容易?

非常感谢任何答案或代码段!

2 个答案:

答案 0 :(得分:5)

如果你想搭建你的网页,你只需要使用实体框架(这不是那么有用) 您可以直接在视图上使用Web服务类,也可以(也可能应该)使用视图模型向视图提交数据。
一个尽可能简单的例子是:

public ActionResult Index(int id)
{
     var webserviceObject = webserviceProxy.GetMyObject(id);
     var vm = new MyViewModel();
     vm.Name = webserviceObject.Name;
     return view(vm);
}

您的简单视图如下所示:

@model MyViewModel
<html>
<body>
<h3>@Model.Name</h3>
</body>
</html>

答案 1 :(得分:1)

  

ASP.NET MVC依赖于EntityFramework和类定义的模型,但是按照DataBaseFirst方法的建议将整个数据库复制到EF类中根本不可行,因为数据库非常庞大而且我并不需要全部这是我的任务。

我对你的上述陈述感到有点困惑。使用数据库第一种方法只会将数据库的结构复制到应用程序中,而不是数据。另外,这是一个手动过程,因此数据库的大小并不重要。

导入后,您始终可以删除不需要的表。它就像在模型中选择它们并点击删除一样简单,因此它不是一个特别费力的过程。

我是数据库第一种开发风格的忠实粉丝,但它是个人选择,因此您可能会发现其他方法更具吸引力,这取决于您自己的偏好。