Я прочитал article Rick Strahl о способах обработки контекста данных. Мой DBML находится внутри библиотеки классов, я держу свой контекст данных открытым, создавая статический метод Current в отдельном частном классе в библиотеке.Linq to SQL DataContext Lifetime Management Issue
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 как можно дольше?
работал как шарм. Благодаря! –