Должен ли я рассматривать Entity Framework как неуправляемый ресурс?
Я работаю с классом, который использует ссылку на EF в своем конструкторе.
Я реализовалIDisposable
, но я не уверен, нужен ли мне деструктор, потому что я не уверен, что могу классифицировать EF как неуправляемый ресурс.
Если EF является управляемым ресурсом, то мне не нужен деструктор, поэтому я думаю, что это правильный пример:
public ExampleClass : IDisposable
{
public ExampleClass(string connectionStringName, ILogger log)
{
//...
Db = new Entities(connectionStringName);
}
private bool _isDisposed;
public void Dispose()
{
if (_isDisposed) return;
Db.Dispose();
_isDisposed= true;
}
}
Если EF неуправляем, я пойду с этим:
public ExampleClass : IDisposable
{
public ExampleClass(string connectionStringName, ILogger log)
{
//...
Db = new Entities(connectionStringName);
}
public void Dispose()
{
Dispose(true);
}
~ExampleClass()
{
Dispose(false);
}
private bool _isDisposed;
protected virtual void Dispose(bool disposing)
{
if (_isDisposed) return;
// Dispose of managed resources
if (disposing)
{
// Dispose of managed resources; assumption here that EF is unmanaged.
}
// Dispose of unmanaged resources
Db.Dispose();
_isDisposed = true;
//freed, so no destructor necessary.
GC.SuppressFinalize(this);
}
}
Который из них?