Я прочитал статью Рика Страла о способах работы с контекстом данных. Мой DBML находится внутри библиотеки классов, я оставляю свой контекст данных открытым, создавая статический метод Current в отдельном настраиваемом частичном классе в библиотеке.
public partial class DataContext
{
public static DataContext Current
{
get
{
DataContext dc = HttpContext.Current.Items["dc"] as DataContext;
if (dc == null)
{
dc = new ImmediacyPageDataContext();
HttpContext.Current.Items["dc"] = dc;
}
return dc;
}
}
затем получите доступ к нему так
DataContext dc = DataContext.Current;
Однако это вызывает проблемы всякий раз, когда я обновляю свой файл DBML. После редактирования файла DBML всякий раз, когда я пытаюсь построить проект, мой файл конструктора не восстанавливается / не удаляется. Если я попытаюсь запустить опцию настраиваемого инструмента, она вернется с ошибкой.
Единственный способ обойти это - переименование или удаление настраиваемого частичного класса, повторное создание файла конструктора и последующее добавление моего настраиваемого частичного класса обратно в решение. Это действительно работает, но .. это немного больно.
Есть ли лучший подход, который упростит редактирование моих файлов DBML и при этом продлит мой DC как можно дольше?