是警告CA1001实施IDisposable忽略不计

时间:2018-12-02 08:41:15

标签: c# asp.net-mvc entity-framework repository-pattern idisposable

我正在使用Repository模式,并拥有通用的存储库类

public class GeneralRepository<T> where T:class
{
    private Context con = new Context();
    protected DbSet<T> Dbset { get; set; }

    public GeneralRepository()
    {
        Dbset = con.Set<T>();
    }
    public IEnumerable<T> GetAll()
    {
        return Dbset;
    }
    public T SelectByID(int? id)
    {
        var rec = Dbset.Find(id);
        return rec;
    }
    public void AddRecord(T entity)
    {
        Dbset.Add(entity);
    }
    public void EditRecord(T entity)
    {
        con.Entry(entity).State = EntityState.Modified;
    }

    public void Detach(T entity)
    {
       con.Entry(entity).State = EntityState.Detached;
    }
    public void Save()
    {
        con.SaveChanges();
    }
}

有多个本机存储库正在继承我的常规存储库,例如:

public class EmailAssignRepository:GeneralRepository<EmailAssign>
public class DepartmentRepository:GeneralRepository<Department>

我的代码一切运行正常,但是当我运行代码分析时,它给了我警告。这是什么意思?可以忽略不计吗?如果不是,该如何克服这个警告?

1 个答案:

答案 0 :(得分:3)

基于MSDN

  

一个类实现IDisposable接口来处理非托管接口   它拥有的资源。 IDisposable类型的实例字段   表示该字段拥有非托管资源。一类   声明一个IDisposable字段间接拥有一个非托管资源   并应实现IDisposable接口。如果不上课   直接拥有任何非托管资源,因此不应实施   终结器。

原因:

  

一个类声明并实现一个实例字段,该实例字段是   System.IDisposable类型,并且该类未实现IDisposable

如何解决违规行为

  

要解决违反此规则的问题,请实施IDisposable并从   System.IDisposable.Dispose方法调用   字段。

请参见:How to implement IDisposable inheritance in a repository?


何时禁止显示警告(您的问题可以忽略不计吗?否)

  

请勿根据此规则禁止警告。