Доступ к удаленному DataContext из linq в SQL - PullRequest
3 голосов
/ 16 января 2011

У меня есть текстовые данные linq2sql, которые удаляются. Но когда я проверяю на ноль, у меня всегда ложное условие.

DataClasses1DataContext dc = new DataClasses1DataContext();
dc.Dispose();

какой-то другой код дальше

if (dc == null) {
    // ALWAYS FALSE
}

Как я могу узнать, был ли удален текстовый текст?

UPDATE: Позвольте мне уточнить себя. Я получаю datacontext, но иногда внешний код пропускает объект (который не является нулевым, но уже удален). Мне нужно проверить, существует ли объект. Я думал о чем-то ином, чем попытка поймать.

Ответы [ 2 ]

5 голосов
/ 16 января 2011

Класс DataContext не предоставляет никаких свойств, которые могут сказать вам, был ли он удален.
Однако вы можете создать его самостоятельно, переопределив метод Dispose(bool):

public bool IsDisposed { get; private set; }
protected override void Dispose(bool disposing) {
    IsDisposed = true;
}
1 голос
/ 16 января 2011

Вызов Dispose () не очищает ссылки на объект. Если dc является полем, то простым способом справиться с этим, который работает для всех одноразовых классов, было бы вручную назначить dc = null; сразу после вызова Dispose (). Это также означает, что контекст данных может быть пригоден для сбора мусора, даже если ваш класс живет намного дольше.

Если dc является локальной переменной, просто используйте:

using(var dc = new YourDataContext()) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...