Допустимо ли для моего контроллера передавать параметр соединения в службу? - PullRequest
0 голосов
/ 12 декабря 2011

Я пользуюсь услугами в 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 ]

3 голосов
/ 12 декабря 2011

Саманта Дж,

Я думаю, вам лучше работать с интерфейсами для хранилища и внедрять их при создании экземпляров классов.на самом деле, я бы рекомендовал ТОЛЬКО сервисам знать о подключении к базе данных через IRepository IOC.В свою очередь, классы контроллера будут работать напрямую с классами обслуживания (также через IOC) и получат viewModel (для любого HttpGet) и / или статус, если выполняется сообщение.

Конечно, этоспорный вопрос и наличие 2 человек в комнате даст 3 разных ответа:)

2 голосов
/ 12 декабря 2011

Технически нет ничего плохого. Так что, если у вас были данные 2010 года в DB2010, и вы передали 2010 и данные для просмотра и он передал его обратно, а затем где-то построить соединение, основанное на "БД" и год, nae проблема

Если вы передаете DB2010 или жестко кодируете его на веб-странице, тогда рецензирование будет для вас болезненным опытом. Гринь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...