C# 创建一个SqlSugarClient实例,SqlSugar使用技巧

SqlSugar是一个轻量级的ORM框架,它可以帮助你在C#中更方便地操作数据库。以下是如何在C#中使用SqlSugar的步骤:

  1. 首先,你需要在你的项目中安装SqlSugar。你可以通过NuGet包管理器来安装。在NuGet包管理器控制台中输入以下命令:
    Install-Package SqlSugar
     
  2. 在代码中,需要引用SqlSugar的命名空间:
    using SqlSugar;
    
     
  3. 创建一个SqlSugarClient实例,这个实例将用于执行所有的数据库操作:
    var db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "your connection string", // 这里替换为你的数据库连接字符串
        DbType = DbType.SqlServer, // 这里替换为你的数据库类型
        IsAutoCloseConnection = true, // 自动关闭数据库连接
        InitKeyType = InitKeyType.Attribute // 从实体特性中读取主键自增列信息
    });
    
     
  4. 使用SqlSugarClient实例来执行数据库操作。例如,你可以使用它来查询、插入、更新和删除数据:
    // 查询数据
    var list = db.Queryable<User>().ToList();
    
    // 插入数据
    var user = new User { Name = "John", Age = 18 };
    db.Insertable(user).ExecuteCommand();
    
    // 更新数据
    var result = db.Updateable<User>(u => u.Name == "John").SetColumns(u => u.Age).ExecuteCommand();
    
    // 删除数据
    var result = db.Deleteable<User>().In(u => u.Name == "John").ExecuteCommand();

    注意:以上代码中的"User"是你的数据库表对应的实体类,你需要根据你的实际情况来修改。

SqlSugar使用技巧

  1. 使用Ado.Net连接数据库:SqlSugar支持多种数据库连接方式,包括ADO.Net、Entity Framework、NHibernate等。你可以根据需要选择合适的连接方式。

  2. 使用DbSet进行CRUD操作:DbSet是SqlSugar中的一个重要概念,它代表了一个数据库表的集合。你可以像操作普通集合一样操作DbSet,例如添加、删除、更新和查询数据。

  3. 使用Lambda表达式进行条件查询:SqlSugar支持使用Lambda表达式进行条件查询,这使得查询更加简洁和易读。

  4. 使用Join进行多表关联查询:如果你需要查询多个表的数据,可以使用Join方法进行关联查询。

  5. 使用自定义的Mapper类:如果你需要对数据库表的某些字段进行特殊处理,可以创建一个自定义的Mapper类。这个类可以用来定义如何将数据库表的行映射到你的实体类。

    // 创建SqlSugarClient实例
    var db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "your connection string", // 数据库连接字符串
        DbType = DbType.SqlServer, // 数据库类型
        IsAutoCloseConnection = true, // 自动关闭连接
        InitKeyType = InitKeyType.Attribute // 从实体特性中读取主键和自增列信息
    });
    
    // 定义实体类
    public class UserInfo
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    // 使用DbSet进行CRUD操作
    var users = db.Queryable<UserInfo>().ToList(); // 查询所有用户
    var user = db.Queryable<UserInfo>().InSingle(1); // 根据ID查询用户
    db.Insertable(user).ExecuteCommand(); // 插入新用户
    db.Updateable(user).SetColumns(u => u.Name).IsEqualTo("New Name").ExecuteCommand(); // 更新用户名称
    db.Deleteable<UserInfo>().In(1).ExecuteCommand(); // 根据ID删除用户
    
    // 使用Join进行多表关联查询
    var result = db.Queryable<UserInfo, OrderInfo>((u, o) => new object[] { u.Id, o.Id })
        .JoinTable<OrderInfo>((u, o) => new { u.Id, o.UserId })
        .Select((u, o) => new { u.Id, u.Name, o.OrderNo })
        .ToList(); // 查询每个用户的订单信息
    

  6. 使用SqlSugar的DbFirst工具:DbFirst是一个数据库生成工具,它可以根据你的数据库结构自动生成对应的实体类和数据访问层代码。

  7. 使用链式调用:SqlSugar的所有方法都返回SqlSugar对象本身,所以你可以使用链式调用来简化代码。

  8. 使用事务管理:SqlSugar支持事务管理,你可以使用它的SaveChanges方法来批量保存数据,或者使用它的BeginTran和CommitTran方法来手动管理事务。

  9. 使用多租户:如果你的应用需要支持多租户,你可以使用SqlSugar的MultiTenant插件。

    // 使用DbFirst工具自动生成实体类和数据访问层代码
    var db = new MyDbContext();
    db.Database.Initialize(true);
    
    // 使用Ado.Net连接数据库
    var db = new SqlSugarClient(new ConnectionConfig()
    {
        ConnectionString = "Data Source=(local);Initial Catalog=MyDB;Integrated Security=True",
        DbType = DbType.SqlServer,
        IsAutoCloseConnection = true,
        InitKeyType = InitKeyType.Attribute
    });
    
    // 使用链式调用
    var user = db.Queryable<User>().Where(u => u.Name == "Tom").First();
    user.Name = "Jerry"; // 修改用户的名字
    db.Updateable(user).ExecuteCommand(); // 保存修改后的数据到数据库
    
    // 使用事务管理
    using (var db = new SqlSugarClient(new ConnectionConfig() { ... }))
    {
        db.BeginTran();
        try
        {
            var user = db.Queryable<User>().Where(u => u.Name == "Tom").First();
            user.Name = "Jerry"; // 修改用户的名字
            db.Updateable(user).ExecuteCommand(); // 保存修改后的数据到数据库
            db.CommitTran(); // 提交事务
        }
        catch (Exception ex)
        {
            db.RollbackTran(); // 发生异常时回滚事务
            throw ex; // 抛出异常
        }
    }
    

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值