此错误消息通常表示正在从静态方法访问实例属性。但就我而言,这些方法都不是静态的。如果我删除":IDisposable"和Dispose方法,错误消息消失。但是,当我使用DbOps对象时,我希望能够清理数据库资源。为什么会出现此错误?
using System.Data.Entity;
namespace DbAccess
{
class DbAccess
{
public void PerformSomeWork()
{
using (DbOps dbOperations = new DbOps())
{
List<Person> people = DbOps.GetPeople();
// ... other database access
}
}
}
class DbOps : IDisposable
{
CustomerContext customerContext;
public DbOps()
{
customerContext = new CustomerContext();
}
public void Dispose()
{
customerContext.Dispose();
}
public List<Person> GetPeople()
{
return customerContext.People.ToList();
// return new List<Category>();
}
// other database operations
}
class CustomerContext : DbContext
{
public DbSet<Person> People { get; set; }
// other DbSets
}
class Person
{
string name;
}
}
答案 0 :(得分:4)
似乎
using (DbOps dbOperations = new DbOps())
{
List<Person> people = DbOps.GetPeople();
}
应该是
using (DbOps dbOperations = new DbOps())
{
List<Person> people = dbOperations.GetPeople();
}
IDisposable似乎并不相关,但我想当你删除IDisposable时你也会更改这些行,因为你没有Dispose就可以使用。