core web api通过freesql进行事务的运用

core web api使用freesql:.net core web api+freesql-CSDN博客

事务:执行单个逻辑功能的一组操作称为事务。事务是一个最小的工作单元,不论执行成功与失败都作为一个整体进行工作。

  • 事务的ACID特性:
  • 原子性(Atomicity):事务的执行是作为原子的,即不可再分。整个语句作为一个不可再分的执行单元,要么都执行,要么都不执行。
  • 一致性(Consistency):在事务开始之前和事务结束之后,所有的数据都保持一致状态。
  • 隔离性(Isolation):事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
  • 持久性(Durability):事务完成之后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

使用情景:再添加数据的时候需要添加两张表中的数据,这时候就可以使用freesql的事务调用:

官网参照:

首先因为是两个实体类,所以创建一个类,用来放两个实体类中的添加的字段

使用事务进行添加的接口:

public async Task<bool> CreateAsync([FromBody] StudentScoreDto dto)
{
    using Object<DbConnection> conn = freeSql.Ado.MasterPool.Get();
    using DbTransaction transaction = conn.Value.BeginTransaction();
    Student student = new Student() { 
        Sage=dto.Sage,
        Sclacc=dto.Sclacc,
        Sname=dto.Sname,
        Spassword="123456",
        Ssex=dto.Ssex
    };
    Score sc=new Score() { 
        Cname=dto.Sname,
        Cscore=dto.Cscore,
        Grantsc=dto.Grantsc,
        SQLSERVER=dto.SQLSERVER
    };
    bool result = false;
    try
    {
        await freeSql.Insert(student).WithTransaction(transaction).ExecuteAffrowsAsync();
        await freeSql.Insert(sc).WithTransaction(transaction).ExecuteAffrowsAsync();
        result = true;
        transaction.Commit();
    }
    catch (Exception ex)
    {
        transaction.Rollback();
        result = true;
       
    }
    return result;
}

使用事务进行修改的接口(修改的时候的涉及的表必须要有主键)

public async Task<bool> updateAsync([FromBody] StudentScoreDto dto)
{
    using Object<DbConnection> conn = freeSql.Ado.MasterPool.Get();
    using DbTransaction transaction = conn.Value.BeginTransaction();
        
    Student student = new Student()
    {
        Sage = dto.Sage,
        Sclacc = dto.Sclacc,
        Sname = dto.Sname,
        Spassword = "123456",
        Ssex = dto.Ssex
    };
    Score sc = new Score()
    {
        Cname = dto.Sname,
        Cscore = dto.Cscore,
        Grantsc = dto.Grantsc,
        SQLSERVER = dto.SQLSERVER
    };
    bool result = false;
    try
    {
        int a = await freeSql.Update<Models.Student>().SetSource(student).WithTransaction(transaction).ExecuteAffrowsAsync();
        int bb = await freeSql.Update<Models.Score>().SetSource(sc).WithTransaction(transaction).ExecuteAffrowsAsync();
        result = true;
        transaction.Commit();
    }
    catch (Exception ex)
    {
        transaction.Rollback();
        result = true;

    }
    return result;
}

使用事务进行删除的接口

public async Task<bool> deleteAsync(string name)
{
    using Object<DbConnection> conn = freeSql.Ado.MasterPool.Get();
    using DbTransaction transaction = conn.Value.BeginTransaction();
   
    bool result = false;
    try
    {
        await freeSql.Delete<Models.Score>().Where(c => c.Cname == name).WithTransaction(transaction).ExecuteAffrowsAsync();
        await freeSql.Delete<Models.Student>().Where(a=>a.Sname==name).WithTransaction(transaction).ExecuteAffrowsAsync();
        
        result = true;
        transaction.Commit();
    }
    catch (Exception ex)
    {
        transaction.Rollback();
        result = true;

    }
    return result;
}

以上就是 core web api中使用freesql进行事务的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值