2012-07-27 71 views
0

嘿,我有一个独特和令人不安的情况。交易环绕企业数据库代码+实体框架代码

我正在开发一个项目,其中我的团队使用了企业数据库和实体框架的混合体。显然这可能不被推荐,但这是我坚持。我想采用使用Enterprise Data Library编写的方法,并采用使用Entity Framework编写的其他方法,并将这两种方法都包装在单个事务中(无需Microsoft分布式事务服务)。我希望尽量减少重写代码,并能够将这两种方法按照原样包装在单个事务中。这可能吗?谢谢。

使用SQL Server 2008和.NET 4.0

+0

答案可能是,但你没有描述足够详细的方法来知道。其他可能影响答案的因素是数据库和版本以及.NET版本。 – 2012-08-10 04:03:28

回答

1

要在同一TransactionScope混合EF和EntLib查询,而无需使用DTC我想。

好消息:这是可能的。如果您为EntLib DAAB和EF DbContext使用完全相同的连接字符串,则它将工作,具体取决于EF,EntLib和SQL Server的版本。

所以,你必须做的是:

  1. 检查你有正确的版本
  2. 获得由EF改变了你的连接字符串的版本,并使用它,而不是你的。

对1,我已经检查了这些组合:

  • SQL Server必须在2008年或更旧
  • EntLib 4.1 + EF 5不起作用
  • EntLib 5件+ EF 5件作品

对于2,要获取由EF更改的连接字符串,您必须调试使用DbContext实例的代码的执行。设置断点并观察或检查DbContext Database.Connection.ConnectionString属性。这是连接字符串的EF版本。将它用于EF和EntLib,您将摆脱DTC。