WCF和NHibernate事务范围

时间:2011-07-10 07:37:19

标签: wcf nhibernate

我有客户端调用进入WCF服务,然后通过Fluent NHibernate查询数据库。

目前,WCF保留默认值(即每次通话)。

在我的代码中,我做了类似的事情:

using (_repository.DbContext.BeginTransaction()) {
    try {
        _repository.SavePerson(object);
        _repository1.SaveAddress(object1);
    } catch {
        _repository.DbContext.RollbackTransaction();
        throw;
    }
}

因为DbContext_repository的{​​{1}}相同。我是否需要在_repository1上进行回滚?

此外,由于存储库中的Save方法, Session对象用于保存对象。

我需要知道的是, 两个电话会议的会话是一样的,还是两个不同的会话?我假设他们是相同的 我将它们作为一个工作单元在事务范围内进行分组。

此外,如何与WCF调用协调,是否还需要处理来自WCF端的事务?

1 个答案:

答案 0 :(得分:0)

无法访问您的代码的人无法回答您的问题。 NHCF不会创建NHibernate会话,您确实有一些用于创建会话的自定义代码。如果你想同时对r1和r2做东西并且只回滚r1,你需要在每个会话上进行一次事务会话。现在你可以在不触及r2的情况下回滚r1。

解决方案是从会话工厂打开第二个会话。