c# – CA1001 Visual Studio 2012代码分析警告.这是什么意思?

它并不重要,但我想弄清楚它告诉我什么,这是一个合理的警告吗?有人可以用简单的术语解释这个错误吗?

CA1001 Types that own disposable fields should be disposable

Implement Idisposable on ‘MemVoteManager’ because it creates members of the
following Idisposable types: ‘CongressDBEntities’. If ‘MemVoteManager’
has prevIoUsly shipped,adding new members that implement Idisposable
to this type is considered a breaking change to existing
consumers.

public class MemVoteManager : AbstractDataManager,IMemVoteManager
{
    private CongressDBEntities context = new CongressDBEntities();

    public int AddMemVote(tMemVotescore mvs)
    {
        //Insert Model
        context.tMemVotescores.Add(mvs);
        context.SaveChanges();

        int newPK = mvs.MemVotescoresID;

        //Update funky column ID with PK as well
        var memVoteItem = (from m in context.tMemVotescores
                           where m.MemVotescoresID == newPK
                           select m).SingleOrDefault();

        memVoteItem.ID = memVoteItem.MemVotescoresID;
        context.SaveChanges();
        return newPK;
    }

解决方法

您可以实现Idisposable,以便在消费者完成您的课程时处理上下文,但您可能最好不要让上下文成为该类的成员.只需在需要时创建它并在完成后将其丢弃:
public int AddMemVote(tMemVotescore mvs)
{
    //Insert Model
    using(CongressDBEntities context = new CongressDBEntities())
    {
        context.tMemVotescores.Add(mvs);
        context.SaveChanges();

        int newPK = mvs.MemVotescoresID;

        //Update funky column ID with PK as well
        var memVoteItem = (from m in context.tMemVotescores
                           where m.MemVotescoresID == newPK
                           select m).SingleOrDefault();

        memVoteItem.ID = memVoteItem.MemVotescoresID;
        context.SaveChanges();
    }
    return newPK;
}

上下文是轻量级的,因此每次创建它们都没有太大的代价.此外,您不必担心消费者会通知您处理上下文,并且如果多次使用该类的一个实例,则内存中没有很多内置更改.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...