标签: transactions

DataReader中的错误未关闭

任何人都可以帮我解决这个错误的问题

已经有一个与此Connection关联的开放DataReader,必须先关闭它.

尝试读取此代码时错误失败.

transConn = mySqlConn.BeginTransaction(IsolationLevel.ReadCommitted)
Run Code Online (Sandbox Code Playgroud)

Datareader和初始化事务之间是否存在连接?

任何人都可以帮助我如何解决这个错误.

谢谢偷看!:)

vb.net transactions datareader

0
推荐指数
1
解决办法
2589
查看次数

使用Entity Framework 4读取数据时如何使用事务?

我正在尝试将Microsoft SQL Server 2008 R2中的SNAPSHOT事务隔离级别与Entity Framework 4.0一起使用.然而,这似乎并不像我最初想的那么容易.

要使用SNAPSHOT隔离级别,必须在数据库中启用它.我做到了.我已经使用SQL Management Studio测试了SNAPSHOT隔离级别在我的数据库上按预期工作.我想使用这个隔离级别,因为我想要一致的读取而不锁定行或整个表.所以我的数据库已准备好让我使用SNAPSHOT隔离级别.到现在为止还挺好.

在我的repro应用程序,这是一个WPF应用程序,我有一个窗口,我从一个表中加载一些数据.每次单击按钮时,我一次加载5行.这是窗口的XAML:

<Window x:Class="EFSnapshotTransactionTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Name="UC" Closing="UC_Closing">
<DockPanel>
    <Button Click="Button_Click" DockPanel.Dock="Top">Load next 5</Button>
    <ScrollViewer>
        <ListView ItemsSource="{Binding ElementName=UC, Path=ViewModel.Items}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
                    <GridViewColumn Header="Date" DisplayMemberBinding="{Binding Date}"/>
                    <GridViewColumn Header="DocumentNumber" DisplayMemberBinding="{Binding DocumentNumber}"/>
                    <GridViewColumn Header="Amount" DisplayMemberBinding="{Binding Amount}"/>
                    <GridViewColumn Header="Text" DisplayMemberBinding="{Binding Text}"/>
                </GridView>
            </ListView.View>
        </ListView>
    </ScrollViewer>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

这是窗口的代码隐藏:

    public partial class MainWindow : Window
{
    private ViewModel _vm;

    public ViewModel ViewModel
    {
        get { return _vm; }
    }

    public …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework transactions snapshot transaction-isolation

0
推荐指数
1
解决办法
2581
查看次数

hibernate中的事务

我刚开始休眠

在我的项目中,我需要处理交易.如何在两个类中处理声明式事务

例子:

//class 1
class A{

  createA()
  {
    insert(A);
  }
}

//class 2
class B
{
  createB()
  {
    insert(B);
  }
}

//class 3
@Transaction(Exception.class)

class C
{

  test()
  {

    create(A);

    create(B);

  }
}
Run Code Online (Sandbox Code Playgroud)

根据上面的代码,有可能处理事务,这样如果classA中的insert成功并且classB中的insert失败,那么事务应该回滚并删除插入表A中对应于A类的记录

请使用声明式交易帮我解决这个问题....

在adavace中感谢....

java hibernate transactions

0
推荐指数
1
解决办法
1361
查看次数

使用事务从数据库中安全删除Django模型

在我的Django应用程序中,我具有从数据库中删除模型的单个实例的代码。两个并发请求都可能同时尝试删除同一模型。在这种情况下,我希望一个请求成功而另一个请求失败。我怎样才能做到这一点?

问题在于,当使用删除实例时delete(),Django不会返回有关命令是否成功的任何信息。此代码说明了问题:

b0 = Book.objects.get(id=1)
b1 = Book.objects.get(id=1)
b0.delete()
b1.delete()
Run Code Online (Sandbox Code Playgroud)

这两个delete()命令中只有一个实际上删除了该对象,但是我不知道哪个。不会引发任何异常,也不会返回任何指示命令成功的信息。在纯SQL中,该命令将返回删除的行数,如果该值为0,我知道删除失败。

我将PostgreSQL与默认的Read Commited隔离级别配合使用。我对此级别的理解是,每个命令(SELECT,DELETE等)都可以看到数据库的快照,但是下一个命令可以看到数据库的不同快照。我相信这意味着我不能做这样的事情:

# I believe this wont work
@commit_on_success
def view(request):
  try:
    book = Book.objects.get(id=1)
    # Possibility that the instance is deleted by the other request
    # before we get to the next delete()
    book.delete()
  except ObjectDoesntExist:
    # Already been deleted
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

database django postgresql transactions django-models

0
推荐指数
1
解决办法
2572
查看次数

使用IRepository的C#Shared Transactions和NHibernate

我正在考虑使用NHibernate实现IRepository模式,我有一个问题,我无法回答搜索网络.

假设我有3个存储库,PersonRepository,PersonAddressRepository和PersonAccountRepository.现在假设业务逻辑指示存在调用PersonRepository.Deactivate(),PersonAddressRepository.Deactivate()和PersonAccountRepository.Deactivate()的"Deactivate Person"进程.

我希望能够按照......的方式做点什么.

using (ITransaction transaction = session.BeginTransaction()) { 
    session.Update(Person);
    session.Update(PersonAddress);
    session.Update(PersonAccount);
}
Run Code Online (Sandbox Code Playgroud)

因此,如果任何更新失败,整个过程将在数据库中回滚.现在我对NHibernate的理解是,你只能为每个对象创建一个Session,所以...

var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Person).Assembly);
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
using (ISession session = sessionFactory.OpenSession()) {
    using (ITransaction transaction = session.BeginTransaction()) {
    session.Save(Person);
}
Run Code Online (Sandbox Code Playgroud)

这是对的还是我弄错了?有关NHibernate的多表更新和事务的事务的最佳实践是什么?

提前致谢.

c# nhibernate transactions irepository

0
推荐指数
1
解决办法
1099
查看次数

hibernate jpa:会话已关闭!

应用程序基于Spring 2.5.5和hibernate 3.2.0 GA.

我的DAO中有以下方法,它将MessageEntities附加到指定的User:

public MessageEntity findByUserId(int userId) {
      List<MessageEntity> result = (List<MessageEntity>) em.createNamedQuery(MessageEntity.Q_BY_USER_ID).setParameter("userId", userId).getResultList();
      if (!result.isEmpty()) {
         return result.get(0);
      } else {
         return null;
     }
}
Run Code Online (Sandbox Code Playgroud)

我需要从集成测试中调用此方法来检查系统的行为是否有效.只要这个方法不是事务性的,我得到的就是org.hibernate.SessionException:Session被关闭了!.避免这种情况的最简单方法是使用@Transactional(readOnly = true)标记findByUserId方法.但据我了解,事务管理应该是服务层的职责,以避免不必要的事务创建.所以,我的问题是:我怎样才能正确地摆脱SessionException

java spring hibernate jpa transactions

0
推荐指数
1
解决办法
6738
查看次数

使用Hibernate和Guice管理JavaSE中的事务

我正在编写一个使用GWT,Hibernate和Google Guice(使用GIN)的相当简单的应用程序.我想要做的是使用外部管理器管理事务(比如 @Transactional在Spring中使用),而不是使用EntityManager#getTransaction.我试过用@Transactional,但它似乎对我不起作用.

我已经使用了EntityManager注入Providers,如下所示:

/* import stuff */

public class DbProvider implements Provider<EntityManager> {

    public EntityManager get() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("persdb");
        return emf.createEntityManager();
    }

}
Run Code Online (Sandbox Code Playgroud)

在手动管理事务时,它似乎正常工作.我希望自动管理事务,也可以使用DBUnit进行自动化测试.

有谁知道如何解决这个问题?

java hibernate transactions guice

0
推荐指数
1
解决办法
1912
查看次数

spring,transaction和unit tests - 如何在类级别设置事务

我正在使用Spring junit runner及其事务功能来在每次测试之前和之后启动和回滚事务.

但是我有一个测试类有一些繁重的数据库初始化,我希望每个测试(方法)在事务范围内运行,即在测试开始时启动一个事务,并在完成类中的所有测试后回滚它.

junit spring unit-testing transactions

0
推荐指数
1
解决办法
1866
查看次数

需要更改生产数据库中的列类型(SQL Server 2005)

我需要帮助编写TSQL脚本来修改两列的数据类型.

我们正在更改两列:

  • uniqueidentifier - > varchar(36)***具有主键约束
  • xml - > nvarchar(4000)

我主要担心的是脚本的生产部署......

该表由一个公共网站主动使用,每小时可获得数千次点击.因此,我们需要脚本快速运行,而不会影响前端的服务.此外,如果发生错误,我们需要能够自动回滚事务.

幸运的是,该表只包含大约25行,所以我猜测更新会很快.

该数据库是SQL Server 2005.

(仅供参考 - 由于第三方工具与SQL Server的xml和uniqueidentifier类型不兼容,因此需要更改类型.我们已经测试了dev中的更改,并且更改没有任何功能问题.)

sql sql-server transactions sql-server-2005

0
推荐指数
1
解决办法
2839
查看次数

如果列不存在alter table

我使用生成的SQL脚本(sql 2k5)将列添加到表中.

我需要添加"检查是否存在",因为我的客户有时会运行脚本两次.(我无法控制这部分,这种情况一次又一次地发生)

我发现了一种加入sysobjects和syscolumns的方法,它可以工作.

我的问题是我必须在另一个表中添加一列,其中列不在表的末尾.

对于这个,SQL正在生成那么长的代码...用新列创建新的临时表,从旧表填充,删除旧表,最后重命名临时表.

这里的问题是这个脚本的脚本中有很多GO和事务...

我能做什么?

1.)删除所有GO - s?(不喜欢这个主意)

2.)在每个GO对之间添加我的IF?(不喜欢这个主意)

3.)是否有另一种有意义的方式,实施起来并不难

我无法想到任何事情,我可以检查发布版本,或者任何东西,而不仅仅是我的sysobjects和syscolumns join,但问题将是相同的.

因为GO-s,当它到达BEGIN的END时,我的If将被"遗忘"......

if-statement transactions sql-server-2005

0
推荐指数
1
解决办法
9133
查看次数