我有关于实体框架上下文实例管理的一些问题。
我的代码库由许多独立的组件/代理组成,它们都在同一个进程中运行,只能通过读取它们对应队列中的消息来执行工作(每当组件准备好时,它将获取队列中的下一条消息,因此在组件级别不存在并发问题)。
每个组件都需要独立于其他组件与数据库进行交互。我想知道为每个组件设置上下文实例的更好方法是什么。以下是一些选项:
1> 所有组件使用一个上下文实例。--> 我认为这是最糟糕的,因为它会创建许多并发问题?
2> 为每个组件提供独立的上下文实例。--> 这看起来不错,但是
- 在所有组件并发运行的情况下,在一个进程中拥有许多独立的上下文实例是否可行? - 对于每个组件将要处理的新消息,我应该创建一个新的上下文实例还是保持一个上下文实例的生命周期? 我认为后者更有意义,但我更习惯于在using{}括号中使用上下文,而且我不确定在我使用它的方式中保持一个上下文实例的生命周期是否有任何复杂性? - 我可以依赖于乐观并发性,以使两个不同的独立组件不会在数据库中放置相同的记录,假设所有上下文都在一个进程中?
顺便说一句,我正在使用实体框架4.1。
我的代码库由许多独立的组件/代理组成,它们都在同一个进程中运行,只能通过读取它们对应队列中的消息来执行工作(每当组件准备好时,它将获取队列中的下一条消息,因此在组件级别不存在并发问题)。
每个组件都需要独立于其他组件与数据库进行交互。我想知道为每个组件设置上下文实例的更好方法是什么。以下是一些选项:
1> 所有组件使用一个上下文实例。--> 我认为这是最糟糕的,因为它会创建许多并发问题?
2> 为每个组件提供独立的上下文实例。--> 这看起来不错,但是
- 在所有组件并发运行的情况下,在一个进程中拥有许多独立的上下文实例是否可行? - 对于每个组件将要处理的新消息,我应该创建一个新的上下文实例还是保持一个上下文实例的生命周期? 我认为后者更有意义,但我更习惯于在using{}括号中使用上下文,而且我不确定在我使用它的方式中保持一个上下文实例的生命周期是否有任何复杂性? - 我可以依赖于乐观并发性,以使两个不同的独立组件不会在数据库中放置相同的记录,假设所有上下文都在一个进程中?
顺便说一句,我正在使用实体框架4.1。