У меня есть две сущности: User и UserRole. Реализуется как таблицы в БД и классы с одинаковыми именами. Если я создаю нового пользователя, я должен создать userrole для него. Если есть исключение во время создания пользователя или создания пользовательской роли, пользователь не должен быть создан. Вопрос в том, что я не знаю, как установить блоки try try. У меня есть несколько альтернатив:
1)
try
{
UserDA.BeginTransaction();
try
{
UserDA.Save(newUser);
UserDA.CommitTransaction();
}
catch()
{
throw SomeException;
UserDA.RollbackTransaction();
}
UserRoleDA.BeginTransaction();
try
{
UserRoleDA.Save(newUser);
UserRoleDA.CommitTransaction();
}
catch()
{
throw SomeException;
UserRoleDA.RollbackTransaction();
}
}
catch()
{
//catch user creation exception
}
2)
UserDA.BeginTransaction();
try
{
UserDA.Save(newUser);
UserDA.CommitTransaction();
UserRoleDA.BeginTransaction();
try
{
UserRoleDA.Save(newUser);
UserRoleDA.CommitTransaction();
}
catch()
{
throw SomeException;
UserRoleDA.RollbackTransaction();
}
}
catch()
{
//catch
UserDA.RollbackTransaction();
}
Может быть, кто-то знает более правильный путь.