我是 EF 的新手,看来我犯了一个错误,但我想澄清一下。
我的场景:
- Winforms 应用程序 (ClickOnce)
- 一个静态类,其唯一职责是通过 DataServiceContext 更新 DB - 单个 URI
- 整个应用程序中只有一个控件使用了这个类
使用静态类,我创建了 DataServiceContext 的单个只读实例。还有一个 GetMethod 使用上下文中的 ToList() 获取数据 - 然后将该列表用于数据绑定。我只需要简单的 CRUD,所以有一个保存/删除方法,实体被传入和更新。
当我阅读了更多关于 EF 的内容时,我了解到由于并发问题,共享上下文很糟糕。在这种情况下,我似乎可以摆脱静态上下文,因为每个应用程序实例只会有一个用户访问相同的上下文,或者我会吗?我想让事情尽可能简单。我开始想也许我应该把静态类变成一个普通类,在方法之间共享一个不可变的 DataServiceContext 实例作为保障?也许我应该在通过 SaveChanges 进行服务调用的每个方法中应用 using(DataServiceContext) 以进一步收紧?我现在需要做这些事情还是可能是 YAGNI?
由于我在这里自学(没有导师),我可能有擅离职守的危险。我可能需要一些关于 EF 的基本规则,因为我目前的阅读还没有引导我。请帮忙。