Entity framework 围绕企业数据库代码+;实体框架代码

Entity framework 围绕企业数据库代码+;实体框架代码,entity-framework,transactions,enterprise-library,Entity Framework,Transactions,Enterprise Library,嘿,我有一个独特而麻烦的情况 我正在从事一个项目,我的团队使用了企业数据库和实体框架的混合。显然,这可能不被推荐,但这正是我所坚持的。我希望采用使用企业数据库编写的方法,也希望采用使用实体框架编写的不同方法,并将这两种方法包装在单个事务中(不需要Microsoft分布式事务服务)。我希望尽量减少重写代码,并能够将这两个方法按原样包装在一个事务中。这可能吗?谢谢 使用SQL Server 2008和.NET 4.0我想您希望在相同的TransactionScope中混合使用EF和EntLib查询,

嘿,我有一个独特而麻烦的情况

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


使用SQL Server 2008和.NET 4.0

我想您希望在相同的
TransactionScope
中混合使用EF和EntLib查询,而不使用DTC

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

所以你要做的是:

  • 检查是否有正确的版本
  • 获取EF更改的连接字符串的版本,并使用它而不是您的
  • 对于1,我检查了以下组合:

    • SQL Server必须是2008或更高版本
    • entlib4.1+ef5不起作用
    • entlib5+ef5工作

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

    答案可能是,但您尚未详细描述这些方法。其他可能影响答案的因素包括数据库和版本以及.NET版本。