یافتن Contextهای Dispose نشده در Entity framework
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۰۷/۰۶ ۱۸:۴۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
private static void disposedContext()
{
using (var context = new MyContext())
{
Debug.WriteLine("Posts count: " + context.BlogPosts.Count());
}
}
private static void nonDisposedContext()
{
var context = new MyContext();
Debug.WriteLine("Posts count: " + context.BlogPosts.Count());
} using System.Data;
using System.Data.Common;
using System.Data.Entity.Infrastructure.Interception;
namespace EFNonDisposedContext.Core
{
public class DatabaseInterceptor : IDbConnectionInterceptor
{
public void Closed(DbConnection connection, DbConnectionInterceptionContext interceptionContext)
{
Connections.AddOrUpdate(connection, ConnectionStatus.Closed);
}
public void Disposed(DbConnection connection, DbConnectionInterceptionContext interceptionContext)
{
Connections.AddOrUpdate(connection, ConnectionStatus.Disposed);
}
public void Opened(DbConnection connection, DbConnectionInterceptionContext interceptionContext)
{
Connections.AddOrUpdate(connection, ConnectionStatus.Opened);
}
// the rest of the IDbConnectionInterceptor methods ...
}
} public enum ConnectionStatus
{
None,
Opened,
Closed,
Disposed
}
public class ConnectionInfo
{
public string ConnectionId { set; get; }
public string StackTrace { set; get; }
public ConnectionStatus Status { set; get; }
public override string ToString()
{
return string.Format("{0}:{1} [{2}]",ConnectionId, Status, StackTrace);
}
}