EF returns ExecuteReader 需要一个打开且可用的连接。连接的当前状态是打开的。错误
EF returns ExecuteReader requires an open and available Connection. The connection's current state is open. error
如您所见,我有很多 class 这种结构:
public class OrganizationUserRepository : IOrganizationUserRepository
{
private DataContext _ctx;
public OrganizationUserRepository(DataContext ctx)
{
_ctx = ctx;
}
public bool Add(OrganizationUser entity)
{
try
{
_ctx.OrganizationUsers.Add(entity);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
public bool Edit(OrganizationUser entity)
{
try
{
OrganizationUser Edited = _ctx.OrganizationUsers.Where(i => i.Id == entity.Id).First();
_ctx.Entry(Edited).CurrentValues.SetValues(entity);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
public bool Remove(string id)
{
try
{
Int64 Id = Int64.Parse(id);
OrganizationUser obj = _ctx.OrganizationUsers.Where(i => i.Id == Id).First();
_ctx.OrganizationUsers.Remove(obj);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
}
构造函数中的数据库上下文由 ninject 注入。正如您所见,它只是我的 classes 之一。我在其他服务中有多个这样的 classes使用单个数据库。(WCF 服务)。但我在我的 wcf 跟踪日志中收到此错误:
ExecuteReader requires an open and available Connection. The connection's current state is open.
我首先使用 EF 代码。
我找到了这个 Wrap DbContext db = new DbContext() inusing statement.
我想知道我是否应该使用它,如果是,我如何更改我的 class 结构以在我的代码中使用?
我使用了 public Readonly DbContext
。我只是删除了 readonly,一切正常。
如您所见,我有很多 class 这种结构:
public class OrganizationUserRepository : IOrganizationUserRepository
{
private DataContext _ctx;
public OrganizationUserRepository(DataContext ctx)
{
_ctx = ctx;
}
public bool Add(OrganizationUser entity)
{
try
{
_ctx.OrganizationUsers.Add(entity);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
public bool Edit(OrganizationUser entity)
{
try
{
OrganizationUser Edited = _ctx.OrganizationUsers.Where(i => i.Id == entity.Id).First();
_ctx.Entry(Edited).CurrentValues.SetValues(entity);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
public bool Remove(string id)
{
try
{
Int64 Id = Int64.Parse(id);
OrganizationUser obj = _ctx.OrganizationUsers.Where(i => i.Id == Id).First();
_ctx.OrganizationUsers.Remove(obj);
_ctx.SaveChanges();
return true;
}
catch (Exception ex)
{
// TODO log this error
return false;
}
}
}
构造函数中的数据库上下文由 ninject 注入。正如您所见,它只是我的 classes 之一。我在其他服务中有多个这样的 classes使用单个数据库。(WCF 服务)。但我在我的 wcf 跟踪日志中收到此错误:
ExecuteReader requires an open and available Connection. The connection's current state is open.
我首先使用 EF 代码。
我找到了这个 Wrap DbContext db = new DbContext() inusing statement.
我想知道我是否应该使用它,如果是,我如何更改我的 class 结构以在我的代码中使用?
我使用了 public Readonly DbContext
。我只是删除了 readonly,一切正常。