我最近开始在我的.NET 4.0应用程序中使用Entity Framework 4.0,并对与池化相关的一些事情感到好奇.
据我所知,连接池由ADO.NET数据提供程序管理,在我的情况下是MS SQL服务器.当您实例化新的实体context(ObjectContext)时,这是否适用,即无参数new MyDatabaseModelEntities()?
a)为应用程序创建全局实体上下文(即一个静态实例)或b)使用using块为每个给定操作/方法创建和公开实体上下文有哪些优点和缺点.
我应该了解的某些场景的任何其他建议,最佳实践或常用方法?
在qa中使用一段时间后,我们得到以下错误
Execution of the command requires an open and available connection. The connection's current state is broken.
我们正在使用EntityFramework的单例实例
SOF建议:
服务器关闭导致的invalidoperationexception的EF恢复
1)偶尔创建一个新的ContectObject实例
2)配置池连接数更高
解决这个问题的最佳做法是什么?
我认为为每个Dal操作创建一个新的contectObject是浪费的
我正在考虑使用EF 4开始一个新项目并阅读一些文章,我发现了一篇关于EF与存储库模式和工作单元的文章(http://blogs.msdn.com/b/adonet/archive/2009/ 06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx)
查看该文章,它使用ObjectContext作为UnitOfWork,并将其传递给Repository.
我的问题是,如果我有2个ObjectContext,这意味着我将有2个工作单元,但我实际上希望在这两个上下文上执行的所有操作都是一个单独的工作单元,这种情况是否可行?我不想在每个上下文中调用save,我希望它是事务性的....不使用事务管理器...
例如,我有一个管理操作日志的上下文和管理订单的另一个上下文.让我们说在我的业务层,我有一个名为AddOrder()的方法.AddOrder()将使用订单上下文创建新订单,但它也将使用操作日志上下文来创建新的操作日志条目.由于那些是2个上下文,我将不得不在两个上下文中调用save来提交....也许唯一的选择是只有一个上下文....
编辑:我的意思是2个不同类型的上下文,例如:OperationalLogContext和OrderContext.