Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入后如何处理实体框架记录对象?_C#_.net_Entity Framework_Garbage Collection_Idisposable - Fatal编程技术网

C# 插入后如何处理实体框架记录对象?

C# 插入后如何处理实体框架记录对象?,c#,.net,entity-framework,garbage-collection,idisposable,C#,.net,Entity Framework,Garbage Collection,Idisposable,我在实体框架数据库中插入了很多记录,在运行.SaveChanges()后不再需要它们。此外,我实际上希望尽快释放内存(以便创建新记录)。我没有保留任何链接到旧记录对象的变量,但GC似乎没有删除它们,因此,我认为,是数据上下文或其他东西使它们保持活动状态。如何正确地处理它们,让GC释放它们占用的内存 这其实不是什么问题。让GC完成它的工作 我认为,是数据上下文或其他东西让它们保持活力 对。基本的解决方案是尽快且经常地处理上下文。您是否尝试过在“using”语句中创建上下文 using(var co

我在实体框架数据库中插入了很多记录,在运行
.SaveChanges()后不再需要它们。此外,我实际上希望尽快释放内存(以便创建新记录)。我没有保留任何链接到旧记录对象的变量,但GC似乎没有删除它们,因此,我认为,是数据上下文或其他东西使它们保持活动状态。如何正确地处理它们,让GC释放它们占用的内存

  • 这其实不是什么问题。让GC完成它的工作

  • 我认为,是数据上下文或其他东西让它们保持活力


  • 对。基本的解决方案是尽快且经常地处理上下文。

    您是否尝试过在“using”语句中创建上下文

    using(var context = new MyContext())
    {
        // Do work here .....
    }
    
    不会释放资源,只是将更改提交到数据库

    要释放资源,需要调用对象上下文的方法。 可以通过方法或将代码放入

    还有,方法,否则您可能会耗尽连接


    这里有一个类似的问题:

    您的上下文是否在使用
    语句的
    中?好吧,但我会在之后再次使用它。我必须按顺序插入数百万条记录,您的意思是我必须多次处理和重新创建数据库连接吗?不能强制上下文忘记插入的记录吗?处理上下文与关闭连接不同。
    
    using(var ctx = new EntityModel())
    {
        // do the inserts
        ctx.SaveChanges();
    }