Entity Framework – многоуровневый дизайн – Где разместить строку подключения?

StackOverflow https://stackoverflow.com/questions/859709

Вопрос

Я использую многоуровневую архитектуру с Entity Framework в качестве уровня данных с кучей репозиториев сверху, которые содержат запросы Linq-To-Entities.Уровень данных — это один проект, рядом с которым у меня есть уровень служб и интерфейс, который представляет собой веб-сайт.

Я хочу, чтобы мой веб-сайт отвечал за указание строки подключения для моей модели объекта.Как мне это сделать?

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

Спасибо

Это было полезно?

Решение

Вы можете скопировать строку подключения, созданную в App.Config сборки DAL, в раздел ConnectionStrings файла web.config.

Вы можете сохранить строку подключения в dll сборки, но не следует развертывать ее на веб-сайте.

Вам нужно будет скопировать всю строку подключения.Это должно выглядеть так:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Он должен включать всю информацию о том, где находятся файлы сопоставления.

Другие советы

В моем случае, хотя я и использую L2S вместо L2E, но рекомендация должна остаться в силе.У меня есть библиотека обобщенной конфигурации, которая загружается из XML-файла.Когда требуется контекст данных, каждый объект данных имеет метод, подобный следующему.Конечно, если хотите, его можно легко создать в виде шаблона.

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

Самым большим недостатком является то, что изменения строки подключения требуют перезапуска приложения, но в моем случае это не проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top