Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF CoreC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF Core

Сообщение Anonymous »

В настоящее время я работаю над проектом ASP.net Core Web API, используя EF Core в качестве моего ORM. В основном это потому, что мой проект использует базы данных, я могу получить доступ только на месте и хотел, чтобы способ легко издеваться над уровнем данных, чтобы я все еще мог выполнять некоторую работу, когда я не в офисе. Тем не менее, у меня есть некоторые проблемы с некоторыми последовательными операциями, которые я хотел бы сделать транзакционно. Скажем, у меня есть 2 класса A и b , где зависит от b . A имеет соответствующее Aservice (Ibservice Bservice, iarepository Repo) и arepository (dbcontext db) и B имеет соответствующий BService (ibrepository Repo) и brepository (dbcontext db) . При создании объекта A через Aservice поток будет немного похожим на этот

Код: Выделить всё

public async Task CreateA(CreateARequest req)
{
BDto createdB;

try
{
// Create parent B object that a depends on
createdB = await bService.CreateB(req.CreateBReq);
}
catch (Exception)
{
/* Handle exception */
...
}

/*
By this point BService created the B object through BRepository,
which calls SaveChanges() on each CRUD operation
*/

ADto createdA;

try
{
A entityObj = CreateEntityFromReq(req);
createdA = await repo.Create(A);
}
catch (Exception)
{
/*
Here I would have to delete the created B object as part of
exception handling. I'd like to turn the whole thing into a
single transaction to not have to do this, but services can't
orchestrate transactions cleanly since they don't have access
to the DbContext.
*/
...
}
...
}
< /code>
До сих пор я думал о двух идеях, чтобы справиться с этим: < /p>
[list]
[*] Создать класс TransactionManager (dbContext db) < /code>, которые службы могут получать в качестве зависимости. Этот класс будет поручено только инициировать, совершать и откатить транзакции DB. В конце метода Createa 
.
[/list]
Но я не уверен, какая из этих идей лучше или если кто -либо из них вообще вообще. Я открыт для предложений о том, как лучше справиться с этим.

Подробнее здесь: https://stackoverflow.com/questions/797 ... core-ef-co
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF Core
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF Core
    Anonymous » » в форуме C#
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Правильное управление транзакциями базы данных между службами - ASP.NET Core, EF Core
    Anonymous » » в форуме C#
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Spring Управление транзакциями @Transactional поведение
    Anonymous » » в форуме JAVA
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Управление транзакциями SQLServer через Springboot 3 и Hibernate 6
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»