C# 经常使用的实体框架数据库上下文

C# 经常使用的实体框架数据库上下文,c#,.net,database,entity-framework,entity-framework-6,C#,.net,Database,Entity Framework,Entity Framework 6,在我的应用程序中,我使用代码优先方法中的实体框架。然而,我在我的实体上做了很多工作。事实上,应用程序的所有用途都是不断添加、更新和删除实体。在所有教程和问题中,上下文都是这样使用的: using (var ctx = new MyDBEntities()) { //Operations } 它还说,你不应该在一开始就创建一个上下文,而应该在应用的整个生命周期中使用同一个上下文。虽然我知道在操作后关闭连接很重要,但我认为不断创建新上下文只是为了更新一行,然后离开它并不是一个好的解决方案。

在我的应用程序中,我使用代码优先方法中的实体框架。然而,我在我的实体上做了很多工作。事实上,应用程序的所有用途都是不断添加、更新和删除实体。在所有教程和问题中,上下文都是这样使用的:

using (var ctx = new MyDBEntities())
{
    //Operations
}
它还说,你不应该在一开始就创建一个上下文,而应该在应用的整个生命周期中使用同一个上下文。虽然我知道在操作后关闭连接很重要,但我认为不断创建新上下文只是为了更新一行,然后离开它并不是一个好的解决方案。我经常访问我的数据库(同时读取)增加时间和内存消耗的内容(垃圾收集器不会立即删除它们)

因此,我想征求你的意见。我应该做些什么来提高效率;医生:这要看情况

我不担心重复打开和关闭连接,连接池可以解决任何问题。我认为一些评论触及了一些要点,如果你有一块工作要做,一些插入,一些更新,等等,所有这些都是相关的,我会在一个上下文中完成它们。如果所有事件都不相关,那么每个事件处理程序都应该有自己的上下文


EF可以是一个很好的执行者,我不会用它来加载TB的数据,但对于中等容量的数据,它是可以的。确保您的数据库模式通过适当的索引支持您的查找,这可能比您在应用程序中所能做的任何事情都要长。使用探查器监视sql server,确保使用合理的表大小,并查看最长的时间是什么,重点放在那里。

尽管这不会产生太大的影响。实体框架不是为快速使用大量数据而设计的。相反,我建议您使用
Dapper
newcontext只更新一行No,但提交一个工作单元:yes。@GertArnold,您确切的意思是什么?我通常需要更新一些东西。那就是你的工作单位。一般来说,您不会在同一上下文中调用两次
SaveChanges
。我可以先下载并缓存数据库中的所有数据,进行一些操作,然后将其全部保存一次吗?