单用户桌面应用程序的独特之处在于您知道内存数据是最新的。因此,不是经历为间歇性数据库操作创建新上下文然后重新附加对象的痛苦,在整个应用程序会话中仅使用一个上下文会带来任何风险(除了以后出现的多用户需求之外)?
答案 0 :(得分:0)
上下文是基于“事务”的(即用于提交)。因此,我不会让它成为一个单身人士。
我喜欢这篇文章:Singleton datacontext其中声明:
DataContext是轻量级的,创建
并不昂贵
和
你可能会节省几十毫秒。微观优化这个词让人想起 - 在这种情况下,您可能不应该使用实体框架。
答案 1 :(得分:0)
使用单个DataContext
的唯一风险是增加更改日志太大,AFAIK,并耗尽主内存或丢失用户在发生崩溃时所做的大量更改。我不确定事务行为是否可配置。
但是你必须管理线程同步(就像多线程应用程序中的任何共享数据一样),所以你最好每个数据操作使用DataContext
- 例如打开Form
来修改应用中的用户应该打开它自己的DataContext
并在保存或关闭时提交。