Spring.Net支持Linq2SQL

时间:2009-08-12 06:04:12

标签: linq-to-sql transactions spring.net

我是否知道Spring.Net是否内置了对Linq2SQL的支持?有人在Spring.Net论坛上提到过NHibernate的桥梁。但是,我可能根本不使用NHibernate。我正在寻找对Linq2Sql的直接支持。

如果我使用TxScopeTransactionManager并将基于属性的事务应用于包含两个linq2sql调用的业务方法,那么事务是本地事务还是升级到分布式事务?

2 个答案:

答案 0 :(得分:2)

我建议使用ConnectionUtils及其GetConnectionTxPair方法。 它返回一对附加到它的数据库连接和事务。当您引用事务时,您可以通过简单地设置此上下文的DataContext属性来显式地登记LINQ2SQL Transaction

您可以扩展AdoTemplate以支持LINQ2SQL:

public delegate T DataContextDelegate<T>(DataContext command);

public class LinqAdoTemplate : AdoTemplate
{
    public virtual T Execute<T>(DataContextDelegate<T> del)
    {
        ConnectionTxPair connTxPair = ConnectionUtils.GetConnectionTxPair(DbProvider);

        using (var context = new DataContext(connTxPair.Connection))
        {
            //downcast is a bit smelly here
            //one can throw exception though when connTxPair.Transaction is of invalid type
            context.Transaction = connTxPair.Transaction as DbTransaction;

            return del(context);
        }
    }
}

然后,您可以配置Spring.NET将其注入到AdoTemplate感知对象中。

答案 1 :(得分:0)

我想知道同样的事情。我在这里做了一个快速搜索:

http://jira.springframework.org/secure/QuickSearch.jspa

在这里:

http://forum.springframework.net/search.php?do=process

没有出现任何事情。它不在1.3中,似乎不在2.0的路线图中。