繁体   English   中英

WCF MVC调用存储过程

[英]WCF MVC calling stored procedures

我正在为大学项目开发​​MVC3应用程序。 我希望将WCF用作Web服务,以便能够使用存储过程连接到远程数据库。 目前,我真的没有时间学习实体框架。

我的问题是存储过程名称应保存在哪里? MVC模型应该将存储过程名称以及值等传递给WCF服务,还是应该模型简单地调用WCF服务中的一个方法,该方法将保存存储过程名称并处理该方面?

谢谢。

我的问题是存储过程名称应保存在哪里?

在WCF服务项目中的数据访问层中。 ASP.NET MVC 3应用程序仅在此服务上调用方法。 请记住,ASP.NET MVC应用程序不知道数据库是什么,甚至不知道存储过程是什么。 ASP.NET MVC应用程序仅适用于模型,控制器和视图。

因此,在WCF服务项目中,您将获得一份服务合同:

[ServiceContract]
public interface IMyService
{
    SomeModel Get(int id);
}

那么您可以在WCF服务中实现一个实现,该实现将在存储数据的任何地方去获取数据(在您的情况下,这将是一个SQL数据库,并且获取此数据的方法是调用存储过程):

public class MyService: IMyService
{
    public SomeModel Get(int id)
    {
        // here you can call the stored procedure and return the corresopnding model
        ...
    }
}

显然,这将使您的服务层与给定的数据访问技术紧密结合。 为了解耦它,您可以在服务和实际数据访问之间引入另一个抽象层次:

public class MyService: IMyService
{
    private readonly IMyRepository _repository;
    public MyService(IMyRepository repository)
    {
        _repository = repository;
    }

    public SomeModel Get(int id)
    {
        // you could do additional things in the service method
        // like validating the arguments, call data access methods, ...
        return _repository.Get(id);
    }
}

并且实际的存储过程调用将在存储库的特定SQL实现中执行,该存储库将由您的DI框架注入到您的服务中。

在ASP.NET MVC应用程序中,您将仅使用添加服务引用时为您生成的强类型客户端代理中的WCF服务。

存储过程的名称应保存在WCF服务和实际数据库之间的数据访问层/库中。 即在类中,您在WCF服务中调用的whos方法来获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM