SubSonic的SimpleRepository可以在两个不同对象类型的事务中登记吗?

时间:2009-10-14 18:54:47

标签: subsonic transactions

我一直在探索Sub Sonic 3的SimpleRepository并对此非常满意,但对交易有疑问。我知道使用'AddMany'和'DeleteMany'之类的方法会在单个事务中自动执行所有这些操作,但是想知道是否可以强制SimpleRepository在同一个事务中执行两个不同对象类型的添加或更新交易。例如,假设我在我的应用程序中有两个不同但相关的实体的概念:用户和个人资料。每个用户都必须拥有一个配置文件,每个配置文件都属于一个且只有一个用户。当新用户注册我的应用程序时,我希望他们提供基本的用户信息(凭据,姓名,电子邮件),但也想要一些额外的“个人资料”信息(关于我,性别,邮政编码等) 我希望能够在单个事务中执行User和Profile对象的添加,但由于它需要对具有不同类型参数的“Add”方法进行两次不同的调用,因此我不确定如何使其工作

2 个答案:

答案 0 :(得分:2)

您可以使用以下事务执行此操作:

  using (TransactionScope transactionScope = new TransactionScope())
  {
    using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
    {
      // Add your user
      // Add your profile

      transactionScope.Complete();
    }
  }

答案 1 :(得分:1)

亚当 - 我认为上面的代码是正确的,但实际上是错误的方式,它应该是:

  using (SharedDbConnectionScope connectionScope = new SharedDbConnectionScope())
  {
    using (TransactionScope transactionScope = new TransactionScope())
    {
      // Add your user
      // Add your profile

      transactionScope.Complete();
    }
  }

欢呼声 吉米亨德里