2016-09-27 80 views
0

我在我的应用程序中有许多线程写入到它的datacontext。 因此,它所保存的内容越来越大,当我保存更改时,上下文保持一样大(与预期的一样)。EntityFramework DataContext获取SaveChanges在一段时间后变得更慢

由于它越来越大,SaveChanges持续时间需要越来越长的时间。

是否有选项可以清除已对其进行更改并保存的环境,以便再次提升性能?

我现在想的唯一的事情就是通过重新instanciating我主要和唯一的DataContext例如一段时间后,将其复位。

问候,

回答

2

DbContext被设计为一个短暂的对象。你应该创建它,使用它,并尽快处置它。

using (var context = new YourContext()) 
{ 
    //do your stuffs 

    //call save changes 
    context.SaveChanges(); 
} 

//let the using block dispose the context when exit. 

因为一切都是相对的,也许你的场景需要更多的思考。 Here是一篇不错的文章,我会建议更多地了解如何正确处理数据上下文livetime。

+0

谢谢你的回答。你有什么建议如何有效地将数据保存到数据库连续使用ef(比如来自感官设备的f.e.)?当数据上下文总是非常短暂时,由于每种类型的表都使用一张表,它会重复地重复读取相同的数据,以便为其添加实际的新数据。 – Ravior

+0

@Ravior,不客气。我想我对自己的问题没有足够的了解,但我可以告诉你,我一直在使用短期实例来构建通知系统,并且我创建了批处理,并且每隔30秒发送一次插入和更新操作,以异步避免不断地写入上下文。迄今为止,它工作得很好。 –

相关问题