EF DbContext生命周期可快速更改状态

时间:2014-11-14 15:31:08

标签: c# .net database entity-framework desktop-application

我有一个桌面应用程序正在使用绑定到SQL Server Compact的Entity Framework来实现持久性。该应用程序存储各种“传统”记录(定期访问,但不经常修改),但它也用于保持用于在会话之间恢复应用程序状态的高度可变状态。

我为Entity Framework阅读的大多数建议都涉及保持DbContext生命周期相对较短(甚至可能是方法范围?),以避免过多的内存使用。然而,对于高度可变的状态,似乎有更长的生命周期是有意义的;然而,可变状态在应用程序的整个生命周期中都会持续存在,这意味着在整个应用程序生命周期内保持上下文活动。

我已经考虑为可变状态保留一个单独的DbContext实例,然后将方法范围的上下文用于其他操作,但由于可变状态具有(只读)对较不频繁修改的引用,因此会遇到问题记录;当我尝试从另一个DbContext修改它时,这会导致错误。我正在寻找具有使用EF的经验的开发人员的建议,以及正确的方法来构建它。

这是我目前的想法:

  1. 对所有可变状态及其引用的任何记录使用具有应用生存期的单个DbContext。
  2. 仅为独立记录使用单独的DbContext实例,例如数据更改历史记录和存档对象。
  3. 这仍然会留下很大一部分数据库驻留在内存中,但我不确定还有什么可以在这里工作。数据库大小不是太大(只有数千条记录的顺序),所以这可能没问题。

    建议?

0 个答案:

没有答案