我有一个桌面应用程序正在使用绑定到SQL Server Compact的Entity Framework来实现持久性。该应用程序存储各种“传统”记录(定期访问,但不经常修改),但它也用于保持用于在会话之间恢复应用程序状态的高度可变状态。
我为Entity Framework阅读的大多数建议都涉及保持DbContext生命周期相对较短(甚至可能是方法范围?),以避免过多的内存使用。然而,对于高度可变的状态,似乎有更长的生命周期是有意义的;然而,可变状态在应用程序的整个生命周期中都会持续存在,这意味着在整个应用程序生命周期内保持上下文活动。
我已经考虑为可变状态保留一个单独的DbContext实例,然后将方法范围的上下文用于其他操作,但由于可变状态具有(只读)对较不频繁修改的引用,因此会遇到问题记录;当我尝试从另一个DbContext修改它时,这会导致错误。我正在寻找具有使用EF的经验的开发人员的建议,以及正确的方法来构建它。
这是我目前的想法:
这仍然会留下很大一部分数据库驻留在内存中,但我不确定还有什么可以在这里工作。数据库大小不是太大(只有数千条记录的顺序),所以这可能没问题。
建议?