我们有一个C#解决方案,我们在其中应用了Transaction Script模式;它的图层如下:
现在,我们希望使用TransactionScope实现工作单元模式,每个请求使用一个且只有一个事务(即:每次调用Adapter的方法一个事务,因为我们在适配器级别使用UoW),但我们可以'弄清楚如何管理连接,因为我们可以在同一个方法中连接NHibernate和/或NPGSQL。
此致
答案 0 :(得分:0)
我有点困惑......听起来你正在使用单个数据库,但是没有理由为绕过NHibernate设置单独的数据库连接。只需使用相同的。
使用多个连接需要分布式事务以确保正确性,如果可以避免,它总是更容易和更高效。
示例:
// Inside transaction...
{
// Apologies if I didn't get the class name correct in cast.
var conn = (NpgsqlConnection)session.Connection;
conn.SomeDirectCall().
}
根据您的确切需求,您可能甚至不需要演员。
使用单独连接的唯一原因应该是您明确希望在同一事务中避免所有操作。
答案 1 :(得分:0)