Subsonic Can亚音速';在事务中为两种不同的对象类型登记SimpleRepository?
我一直在探索Sub Sonic 3的SimpleRepository,对它很满意,但对交易有疑问。我知道使用像“AddMany”和“DeleteMany”这样的方法会在一个事务中自动执行所有这些操作,但我想知道是否有可能强制SimpleRepository在同一事务中执行两个不同对象类型的添加或更新。例如,假设我的应用程序中有两个不同但相关的实体:一个用户和一个概要文件。每个用户都必须有一个配置文件,并且每个配置文件只属于一个用户。当一个新用户向我的应用程序注册时,我希望他们提供基本的用户信息(凭据、姓名、电子邮件),但也希望提供一些附加的“个人资料”信息(关于我、性别、邮政编码等)Subsonic Can亚音速';在事务中为两种不同的对象类型登记SimpleRepository?,subsonic,transactions,Subsonic,Transactions,我一直在探索Sub Sonic 3的SimpleRepository,对它很满意,但对交易有疑问。我知道使用像“AddMany”和“DeleteMany”这样的方法会在一个事务中自动执行所有这些操作,但我想知道是否有可能强制SimpleRepository在同一事务中执行两个不同对象类型的添加或更新。例如,假设我的应用程序中有两个不同但相关的实体:一个用户和一个概要文件。每个用户都必须有一个配置文件,并且每个配置文件只属于一个用户。当一个新用户向我的应用程序注册时,我希望他们提供基本的用户信息(
我希望能够在单个事务中添加用户和配置文件对象,但由于它需要使用不同类型参数对“add”方法进行两次不同的调用,因此我不确定如何进行此操作。您可以使用事务执行此操作,如下所示:
using (TransactionScope transactionScope = new TransactionScope())
{
using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
{
// Add your user
// Add your profile
transactionScope.Complete();
}
}
亚当-我认为上面的代码是正确的,但实际上是错误的,应该是:
using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
{
using (TransactionScope transactionScope = new TransactionScope())
{
// Add your user
// Add your profile
transactionScope.Complete();
}
}
干杯
吉米谢谢你的回复。我以前尝试过TransactionScope,但出现了与DTS相关的错误。我肯定错过了SharedDbConnectionScope来强制两个数据访问调用共享连接。现在,当我使用block退出连接作用域时,就会出现一个错误。在这种情况下,SharedDbConnectionScope的Dispose方法似乎导致了一些问题。现在通过源代码尝试跟踪它。感谢您的回复,我稍后会尝试。