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