EF返回ExecuteReader需要一个开放且可用的连接。连接的当前状态是开放的。错误

时间:2017-09-15 14:41:42

标签: c# entity-framework wcf dbcontext using

我有很多具有此结构的类,您可以看到:

 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;
            }
        }


    }

构造函数中的db上下文是由ninject注入的。你可以看到它只是我的一个类。我在另一个使用单个数据库的服务中有这样的多个类。(WCF服务)。但是我得到这个错误在我的wcf tracelog中:

ExecuteReader requires an open and available Connection. The connection's current state is open.

我首先使用EF代码。

我发现这个Wrap DbContext db = new DbContext() inusing statement.我想知道我应该使用它,如果是,我怎样才能更改我的类结构以在我的代码中使用?

1 个答案:

答案 0 :(得分:-1)

我使用了public Readonly DbContext。我只是删除了readonly,一切正常。