Sobes.tech
Junior — Middle

Жазуу учурунда маалыматтарды сактоо учурунда көйгөйлөр келип чыктыбы?

sobes.tech AI

AIден жооп

Ооба, бир учурда билдирүү жөнөтүү учурунда маалыматтарды сактоо боюнча көйгөйлөр пайда болгон. Негизги себеп — жазуу жана жөнөтүү операциялары бөлөк жүргүзүлүп, бирдиктүү транзакция болбогондуктан, синхрондоштуруунун бузулушу: билдирүү жөнөтүлүп жатканда, маалыматтар сакталбай калчу, же тескерисинче.

Бул көйгөйдү чечүү үчүн, мен "Unit of Work" үлгүсүн жана маалымат базасындагы транзакциялар механизмин колдонуп, транзакциялык иштетүүнү ишке ашырдым. C# менен Entity Frameworkте бул мындай көрүнөт:

using (var transaction = context.Database.BeginTransaction())
{
    try
    {
        context.Messages.Add(messageEntity);
        context.SaveChanges();

        messageSender.Send(messageEntity);

        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
        throw;
    }
}

Мындан тышкары, эгер билдирүүнү жөнөтүү ийгиликсиз болсо, базадагы өзгөртүүлөр кайтарылып, маалыматтардын бүтүндүгү жана системанын абалынын туруктуулугу камсыздалат.