Subsonic Can亚音速';在事务中为两种不同的对象类型登记SimpleRepository?

Subsonic Can亚音速';在事务中为两种不同的对象类型登记SimpleRepository?,subsonic,transactions,Subsonic,Transactions,我一直在探索Sub Sonic 3的SimpleRepository,对它很满意,但对交易有疑问。我知道使用像“AddMany”和“DeleteMany”这样的方法会在一个事务中自动执行所有这些操作,但我想知道是否有可能强制SimpleRepository在同一事务中执行两个不同对象类型的添加或更新。例如,假设我的应用程序中有两个不同但相关的实体:一个用户和一个概要文件。每个用户都必须有一个配置文件,并且每个配置文件只属于一个用户。当一个新用户向我的应用程序注册时,我希望他们提供基本的用户信息(

我一直在探索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方法似乎导致了一些问题。现在通过源代码尝试跟踪它。感谢您的回复,我稍后会尝试。