出现的问题如标题所示
出现这个问题的原因是当前使用的entity对象已经在ef上下文中被附加了,如果要解决这种问题的话,网上有很多都是在查询的时候加入一个AsNoTracking()方法,表示查询的时候让上下文不要跟踪这个对象,不知道具体作用如何,反正我用过,是不行的。希望大家有成功的,能与我分享一下。
这里说一下我的解决方法,大家应该做这些的时候都会封装一些Helper,以便调用,那么肯定使用的上下文对象也就是公共的了,我这里也是使用的一个公共的静态的上下文单例对象,所以查询的时候会被跟踪,当然,虽然我没感觉到AsNoTracking()方法对我的修改有什么帮助,我还是加上了,至少查询的时候不会因为缓存影响到我们的查询。然后我在修改的时候就不适用那个公共的单例对象,我重新创建了一个ef上下文对象。当然,有的人会说,这样非常浪费内存。没办法,暂时我没有找到其他更高的解决方法,所以,我用了using,这样虽然每次使用update的时候还是会重新创建一个ef上下文对象,但是至少在使用完了之后能够被及时的回收。
希望大家有什么更好的解决方案,能够分享给我。谢谢!