我正在开发一个 2 层 WPF/EF Code First 应用程序。我做了很多谷歌搜索,但找不到我正在寻找的示例实现......希望这个论坛上的人可以帮助我。以下是要求:
- 在应用程序启动时
- 打开一个 DBContext
- 应用程序启动时缓存各种地图/列表中的参考数据
- 关闭上下文。
- 当用户打开表单时
- 打开一个 DBContext(我在这里使用 UnitOfWork 模式)
- 从上下文中获取实体的新副本以进行编辑。
- 按下 Save 按钮时调用 SaveChanges()。
- 关闭上下文。
当我使用 Cache 中的对象更改导航属性时,问题就出现了。例如,使用下拉菜单(由使用不同 DBContext 创建的缓存提供支持)设置部门导航属性。
UnitOfWork 要么引发异常,说明实体已加载到另一个 DBContext 中(当 Department 延迟加载 DynamicProxy 时),要么在 Department 表中插入新行。
我什至找不到一个缓存参考数据的示例……我不敢相信没有人遇到过这个问题。要么我没有找对地方,要么没有使用正确的关键字。我希望使用 EF 可以做到这一点。如果您能分享您的经验或发布一些参考资料,我将不胜感激。我对此有点陌生,所以想避免使用太多框架,而只使用带有 WPF/EF 堆栈的 POCO。