我有客户端调用进入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端的事务?
答案 0 :(得分:0)
无法访问您的代码的人无法回答您的问题。 NHCF不会创建NHibernate会话,您确实有一些用于创建会话的自定义代码。如果你想同时对r1和r2做东西并且只回滚r1,你需要在每个会话上进行一次事务会话。现在你可以在不触及r2的情况下回滚r1。
解决方案是从会话工厂打开第二个会话。