Два проекта.NET, одна строка соединения с БД?

pathinfo()

$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"

6
задан David Basarab 24 August 2009 в 14:47
поделиться

9 ответов

Создайте частичный класс, который совпадает с вашим контекстом данных, и используйте этот код, чтобы принудительно использовать строку web.config вместо app.config. Поместите частичный класс в то же место, что и ваша модель в библиотеке классов.

public partial class YourDataContext 
{
    partial void OnCreated()
    {
        ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];

        if (cs != null)
        {
             this.Connection.ConnectionString = cs.ConnectionString;
        }
    }
}

См. Этот вопрос для получения дополнительной информации Предпочитаемый метод для строки подключения в библиотеке классов
RichardOD опубликовал ссылку на то, что, на мой взгляд, лучше всего описывает наши проблема LINQ To SQL и значение строки соединения Web.Config

4
ответ дан 17 December 2019 в 00:12
поделиться

Ничего страшного. Поместите строку подключения модели в Web.config и забудьте (удалите) файл конфигурации модели.

DataContext также принимает строку подключения в своем конструкторе, поэтому вы также можете указать ее таким образом (хотя, возможно, не в одной строке) :

DataContext context = new DataContext(ConfigurationManager.ConnectionStrings["TheKey"].ConnectionString);

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

System.Configuration.DefaultSettingValueAttribute("Data Source=SERVER;Initial Catalog=XYZ;Integrated Security=True")].

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

2
ответ дан 17 December 2019 в 00:12
поделиться

I'd say that you should keep the configuration of the product in the web project's web.config, and then inject the configuration you use into the model project.

1
ответ дан 17 December 2019 в 00:12
поделиться

Ok, I'm guessing here, but it looks like both projects use an identical connection string, yes?

In that case, only specify the connection string in the web.config; the class library app.config will not be read by ASP.NET anyway.

0
ответ дан 17 December 2019 в 00:12
поделиться

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

0
ответ дан 17 December 2019 в 00:12
поделиться

You don't need the class library app.config. Just put your configuration at the web.config. Also, if you need some configuration section from the library's app.config, just put it on the web.config. The ConfigurationManager will read it from there.

0
ответ дан 17 December 2019 в 00:12
поделиться

Лично я расширяю DataContext в моем репозитории, а затем делаю что-то вроде:

public ContractsControlRepository()
      : base(ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ToString()) { }

Таким образом, мой репозиторий может быть создан, и я никогда не беспокоюсь о настройке соединения или о том, что с этим вообще нужно иметь дело . Чтобы перейти на / из баз данных dev / live, я просто меняю свой файл web.config.

0
ответ дан 17 December 2019 в 00:12
поделиться

Если ваша библиотека классов моделей упоминается в вашем веб-приложении, вы можете просто удалить ссылку в файле App.Config и убедиться, что у вас есть что-то похожее на то, что размещено в вашей сети. config. Таким образом, когда компилятор просматривает файл web.config, он найдет строку подключения, необходимую для проекта MVC, и, следовательно, не будет необходимости искать ее дальше.

0
ответ дан 17 December 2019 в 00:12
поделиться

Файл app.config в библиотеке не повлияет на производство - те Строки подключения действительно существуют для дизайнера linq2sql. Не на что смотреть, идите вперед, это не те дроиды, которые мы ищем. . .

0
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: