2015-03-02 5 views
-1

Хорошо, у меня есть приложение asp.net mvc (в частности asp.net webapi). СтруктураAsp.net MVC sql только на уровне репозитория

слоев:

  1. Asp.net MVC | консольное приложение
  2. доступ к данным 1 | доступ к данным 2
  3. база данных 1 | база данных 2

Мне нужно создать слой доступа к данным в отдельном проекте (библиотеке классов), который будет использоваться из других проектов в том же решении. Могу ли я указать строку подключения и конфигурации данных только в этом классе? Потому что я должен указать ссылки на соединение и библиотеки данных на каждом родительском уровне.

Я хочу, чтобы для доступа к классам system.data был использован только класс доступа к данным (библиотека классов), а также указанные строки подключения. Я хочу это из-за сложности моей структуры и наличия разных библиотек доступа к данным для доступа к различным источникам данных без изменения конфигурации asp.net mvc.

+0

Если вы включаете информацию о соединении непосредственно в код (не рекомендуется), вы можете указать только для этого класса. Однако, если ваше приложение извлекается из раздела ConnectionStrings вашего файла app/web.config, он будет принимать этот параметр из текущего текущего места сборки, и поэтому его необходимо будет указать в соответствующем файле .config. – Hal

+0

моя проблема в том, что у меня есть несколько источников данных (sqlserver, mysql и продолжайте), и я должен прочитать их из большого количества интерфейсных приложений (консоль, winformms, веб-приложение). я бы хотел избежать ссылки на сборку mysql и sqlserver из asp.net mvc или других приложений переднего плана. – user2100125

+0

Я бы просто использовал другую запись connectionStrings для каждого случая, а затем распространял только то, что вам нужно в каждой области приложения. Неиспользуемые параметры в app/web.config просто игнорируются, если они не используются - они не должны иметь ничего общего с необходимостью зависимостей - они в основном просто пары имя/значение, как и запись AppSettings. – Hal

ответ

1

Интерфейс реализации и IProvider, который является вашим приложением (приложение Asp.Net MVC или консольное приложение). В отдельной библиотеке внедряются MySQLProvider, MyMongoDBProvider и MySQLProvider.

Используйте TinyIOC в своих приложениях для обработки инверсии элемента управления (есть много других параметров, но это первый из них, который я мог бы подумать о том, что автоматически будет искать каталог bin для реализации), а затем упаковать каждое приложение с помощью соответствующая реализация поставщика.