【发布时间】:2010-06-18 10:26:37
【问题描述】:
我正在用 C# asp.NET MVC2 编写一些合并功能。我也在使用 Linq2SQL。
我有一段代码调用两个服务,MessageService 和 UserService。这些都在术语中调用其适当的存储库并对数据库进行修改。每个存储库都声明了它自己的存储库实例,因此我认为这会将以下代码升级为 DTC 。代码是从 AccountService 调用的,这会在这个级别上工作吗?在每个存储库的顶部声明 DataContext 也是不好的做法,还是我应该以某种方式传递对象?提前谢谢你
//Run the merge
try
{
using (TransactionScope scope = new TransactionScope())
{
// Update Messages to be owned by primary user
if (!_MessageService.UpdateCreatedById(MergeUser.UserID, CoreUser.UserID))
{
return false;
}
// Update Comments to be owned by primary user
foreach (var curComment in _MessageService.GetUserComments(MergeUser.UserID))
{
curComment.CreatedBy = CoreUser.UserID;
}
_MessageService.Save();
// Update Logins to be owned by primary user
foreach (var CurLogin in _UserService.GetLogins(MergeUser.UserID))
{
CurLogin.UserID = CoreUser.UserID;
}
_UserService.Save();
scope.Complete();
}
return true;
}
catch (Exception ex)
{
_ErrorStack.Add(ex.Message);
ErrorService.AddError(new ErrorModel("Portal", "WidgetRepository", ErrorHelper.ErrorTypes.Critical, ex));
return false;
}
【问题讨论】:
标签: asp.net datacontext transactionscope