首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetTransactionHandler for ObjectContext

SetTransactionHandler for ObjectContext
EN

Stack Overflow用户
提问于 2014-06-22 20:11:41
回答 2查看 611关注 0票数 2

如何将TransactionHandler设置为ObjectContext?

我正在检查这个示例:事务提交失败的处理,但它只显示了DbContext。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-22 22:37:23

TransactionHandler也适用于ObjectContext。唯一的问题是,在第一个DbConfiguration实例化之前,没有计算基于代码的配置( DbContext )。

两种可能的解决办法

虚拟DbContext:

代码语言:javascript
复制
public class MyDbConfiguration : DbConfiguration
{
    public MyDbConfiguration()
    {
        SetTransactionHandler(SqlProviderServices.ProviderInvariantName, 
            () => new CommitFailureHandler());
    }
}

public class TestContext : DbContext { }

static void Main(string[] args)
{
    // instantiate DbContext to initialize code based configuration
    using (var db = new TestContext()) { }

    using (var db = new TransactionHandlerDemoEntities()) {
        var handler = db.TransactionHandler; // should be CommitFailureHandler

        db.AddToDemoTable(new DemoTable { Name = "TestEntiry1" });
        db.SaveChanges();
    }
}

或DbConfiguration.Loaded事件

代码语言:javascript
复制
static void Main(string[] args)
{
    DbConfiguration.Loaded += DbConfiguration_Loaded;

    using (var db = new TransactionHandlerDemoEntities()) {
        var handler = db.TransactionHandler;

        db.AddToDemoTable(new DemoTable { Name = "TestEntiry1" });
        db.SaveChanges();
    }
}

static void DbConfiguration_Loaded(object sender, DbConfigurationLoadedEventArgs e)
{
    e.AddDependencyResolver(new TransactionHandlerResolver(
        () => new CommitFailureHandler(),
        SqlProviderServices.ProviderInvariantName,
        null),true);
}

TransactionHandlerDemoEntities是ObjectContext。

票数 2
EN

Stack Overflow用户

发布于 2014-06-22 21:22:56

这是专为DbContext设计的。如果可以,请尽快将基于ObjectContext的应用程序重构为DbContext。我认为将出现更多的新特性,这些特性只适用于DbContext API。也许有一天,ObjectContext甚至会被废弃为一个公共API。

你可以ObjectContext,但我不认为这对你有多大帮助。主要的问题无疑是,其他的数据逻辑目前期望ObjectContext

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档