0

我使用 NHibernate 创建了一个 C# 应用程序,用于选择并插入在 Database Design Studio Lite 中创建并使用 SQL Server Management Studio 管理的 SQL Server 数据库。

我的问题是,当我在多个工作站上运行应用程序时,数据库对于多个事务来说是不安全的,就像它不是“线程安全的”一样,不知道该怎么称呼这个问题。

使我的数据库免受多个事务影响的最简单方法是什么?我尝试将“限制访问”设置为 SINGLE_USER 模式,但这会将数据库锁定到连接到它的第一个应用程序,并使所有其他应用程序失败。

从 SQL Server Management Studio 我只创建表。我不选择、插入或更新数据库。所有这些都是通过应用程序完成的。

我希望我提供的这些信息足以帮助我。否则我会再发一些:)

编辑

发现 NHibernate 使用 SessionFactory 所以所有事务都是安全的:)

4

1 回答 1

0

您在查询、添加和修改记录时是否使用实际事务?

using (var session = SessionFactory.OpenSession())
using (var tx = session.BeginTransaction())
{
   // query or submit changes to session here, calling tx.Commit() at the end if you make changes
}

默认隔离应限制为已提交的读取,因此查询不应返回尚未完全提交的任何修改。

于 2012-05-21T09:21:59.780 回答