Предотвращение определенных переопределений кода в Linq2Sql - PullRequest
1 голос
/ 16 февраля 2012

Я использую Linq2Sql в VS 2010 (C # .Net 4.0) для обработки доступа к моей базе данных.Все это прекрасно работает.

Но поскольку мой DataContext находится в отдельном слое от моего веб-приложения (уровень доступа к данным), я настроил его для использования строки подключения в вызывающем файле веб-приложений web.config.

Конечный результат требует внесения одного изменения в файл конструктора Linq2Sql (DB.designer.cs), то есть переопределения первого аргумента конструктора (который по умолчанию используется в строке для строки подключения к БД) и заменыэто с помощью вызова, подобного следующему:

System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString

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

Может кто-нибудь сказать, пожалуйста, могу ли я изменить настройку, чтобы предотвратить это?Или я делаю что-то с частичными классами?а может и совсем иначе?

1 Ответ

2 голосов
/ 16 февраля 2012

Здесь частичные методы пригодятся!К счастью, в LINQ2SQL DataContext загружено несколько очень полезных.Скажем, ваш DataContext назван AutosDataContext, как в моем примере.Создайте новый класс рядом с вашим DBML и назовите его AutosDataContext.Затем заполните его следующим образом:

public partial class AutosDataContext
    {
        partial void OnCreated()
        {
            this.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
        }
    }

Неполный метод OnCreated вызывается сразу после создания экземпляра DataContext и предоставляет вам идеальное место для добавления вашей пользовательской логики строки подключения без обхода конструктора DBMLна это при обновлении.

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