4

这就是我到目前为止所拥有的。我做错了什么还是 3.0.0.3 中有错误?

    var Repository = new SimpleRepository("DBConnectionName");

    using (TransactionScope ts = new TransactionScope())
    {
        using (SharedDbConnectionScope scs = new SharedDbConnectionScope("connstring", "providerName"))
        {
            try
            {
                for (int i = 0; i < 5; i++)
                {
                    Supplier s = new Supplier();
                    s.SupplierCode = i.ToString();
                    s.SupplierName = i.ToString();

                    Repository.Add<Supplier>(s);
                }

                ts.Complete();
            }
            catch
            {
            }
        }
    }

我在 SubSonic DbDataProvider public DbConnection CurrentSharedConnection { get { return __sharedConnection; }

        protected set
        {
            if(value == null)
            {
                __sharedConnection.Dispose();

等等.. __sharedConnection == null :( 对象空引用异常 :(

4

3 回答 3

1

终于为自己解决了这个问题。上述所有代码都不适用于我(SubSonic 3.0.0.3,使用 SQLite),但添加BeginTransaction()使其按预期工作,大大加快了事务并在发生任何异常时回滚更新。

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope(Access.Provider))
{
    using (IDbTransaction ts = sharedConnectionScope.CurrentConnection.BeginTransaction())
    {
        IRepository repo = new SimpleRepository(Access.Provider);
        //Do your database updates

        //throw new ApplicationException("Uncomment this and see if the updates get rolled back");
        ts.Commit();
    }
}

为了完整性:Access.Provider对我来说是一个帮助类中的静态属性,它返回return SubSonic.DataProviders.ProviderFactory.GetProvider(ConnectionString, "System.Data.SQLite");

于 2011-04-16T20:53:14.783 回答
0

也许切换 SharedDbConnectionScope 和 TransactionScope 可能会有所帮助。

using (SharedDbConnectionScope scs = new SharedDbConnectionScope("connstring", "providerName"))
{
    using (TransactionScope ts = new TransactionScope())
    {
    }
}
于 2009-08-22T23:51:31.757 回答
0

这将在设置 Migration 时发生 - 在 tablemigration 上,dbconnection 将被关闭。

尝试使用 SimpleRepositoryOptions.None 的 SimpleRepository。

不知道这算不算bug。我认为事务不适用于 SimpleRepository,当在事务中抛出异常时,我总是保存一半的数据......也许它只适用于 ActiveRecord?有人知道吗?

于 2009-12-23T11:42:30.610 回答