我在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);
这里我让数据库直接从模型中使用信息。
我想知道的是这是一种可接受的创建和使用服务的方式。不知怎的,我需要告诉我的 服务什么数据源反对,这非常动态。
答案 0 :(得分:3)
Samantha J,
我认为您最好使用存储库的接口,并在实例化类时注入它们。事实上,我建议只有服务通过IRepository IOC了解数据库连接。反过来,控制器类将直接针对服务类(也通过IOC)运行,并且将接收viewModel(对于任何HttpGet)和/或如果正在执行帖子的状态。
当然,这是一个有争议的话题,在一个房间里有两个人会提供3个不同的答案:)
答案 1 :(得分:2)
它在技术上没有任何问题。 因此,如果您在DB2010中拥有2010年数据并且您已将2010年的数据传递给视图和 它传回来,然后在某处建立一个基于“DB”和年,nae问题的连接
如果您正在通过DB2010,或者在当时的网页上对其进行硬编码,那么同行评审对您来说将是一次痛苦的经历。笑容。