我的控制器是否可以将连接参数传递给服务?

时间:2011-12-12 18:05:47

标签: asp.net-mvc asp.net-mvc-3

我在MVC中使用服务。我有一个为控制器执行工作的服务,如下所示:

private void Initialize(string dataSourceID)
        {
            this._accountRepository = StorageHelper.GetTable<Account>(dataSourceID);
        }

public bool Delete(Account account)
        {
            if (!ValidateAccountDeletion(account))
                return false;
            try
            {
                _accountRepository.Delete(account);
            }
            catch
            {
                return false;
            }
            return true;
        }

我有多个相同的数据库,我将服务指向其中一个或另一个的方式如下:

 [HttpPost]
    public ActionResult Delete(BaseViewModel vm)
    {
        if (vm.SubmitAction == "Delete")
        {
            _accountService = new AccountService(new ModelStateWrapper(this.ModelState), vm.DataSourceID);

这里我让数据库直接从模型中使用信息。

我想知道的是这是一种可接受的创建和使用服务的方式。不知怎的,我需要告诉我的 服务什么数据源反对,这非常动态。

2 个答案:

答案 0 :(得分:3)

Samantha J,

我认为您最好使用存储库的接口,并在实例化类时注入它们。事实上,我建议只有服务通过IRepository IOC了解数据库连接。反过来,控制器类将直接针对服务类(也通过IOC)运行,并且将接收viewModel(对于任何HttpGet)和/或如果正在执行帖子的状态。

当然,这是一个有争议的话题,在一个房间里有两个人会提供3个不同的答案:)

答案 1 :(得分:2)

它在技术上没有任何问题。 因此,如果您在DB2010中拥有2010年数据并且您已将2010年的数据传递给视图和 它传回来,然后在某处建立一个基于“DB”和年,nae问题的连接

如果您正在通过DB2010,或者在当时的网页上对其进行硬编码,那么同行评审对您来说将是一次痛苦的经历。笑容。