最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用sqlSugar操作mysql數(shù)據(jù)庫(kù)的完整教程

 更新時(shí)間:2026年04月14日 08:37:20   作者:水痕01  
這篇文章主要為大家詳細(xì)介紹了使用C#?sqlSugar進(jìn)行MySQL數(shù)據(jù)庫(kù)操作的基本配置流程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、基本配置

1、安裝依賴包

需要安裝3個(gè)依賴包,分別為mysqlConnector、sqlSugarautofac

2、在appsettings.json中配置mysql的連接信息

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "MySqlConnection": "Server=localhost;Database=net_demo;Uid=root;Pwd=123456;Port=3306;SslMode=None;"
  }
}

3、在入口文件中創(chuàng)建連接

using System.Text.Json;
using Autofac;
using Autofac.Extensions.DependencyInjection;
using SqlSugar;
using study_demo10_orm.Utils;
namespace study_demo10_orm;
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);
        // 配置 JSON 序列化:long 類型序列化為字符串,避免 JavaScript 精度丟失
        builder.Services.AddControllers()
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.WriteAsString;
            });
        // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
        builder.Services.AddOpenApi();
        // 配置swagger
        builder.Services.AddEndpointsApiExplorer();
        builder.Services.AddSwaggerGen();
        // 配置數(shù)據(jù)庫(kù)連接
        builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
        builder.Host.ConfigureContainer<ContainerBuilder>(container =>
        {
            // 使用Autofac 容器注冊(cè)一個(gè)對(duì)象
            container.Register(_ =>
            {
                var connectionString = builder.Configuration.GetConnectionString("MySqlConnection")
                    ?? "Server=localhost;Database=test;Uid=root;Pwd=123456;Port=3306;";
                var db = new SqlSugarClient(new ConnectionConfig()
                {
                    ConnectionString = connectionString, // 數(shù)據(jù)庫(kù)地址字符串
                    DbType = DbType.MySql, // 指定數(shù)據(jù)庫(kù)是mysql
                    IsAutoCloseConnection = true, // 自動(dòng)關(guān)閉連接
                    InitKeyType = InitKeyType.Attribute,
                    MoreSettings = new ConnMoreSettings()
                    {
                        IsAutoRemoveDataCache = true // 數(shù)據(jù)變更時(shí)自動(dòng)清理緩存
                    }
                });
                return db;
            }).As<ISqlSugarClient>().InstancePerLifetimeScope();
        });
        var app = builder.Build();
        // Configure the HTTP request pipeline.
        if (app.Environment.IsDevelopment())
        {
            app.MapOpenApi();
            // 配置swagger
            app.UseSwagger().UseSwaggerUI();
        }
        app.UseHttpsRedirection();
        app.UseAuthorization();
        app.MapControllers();
        // 配置打印日志
        app.Logger.LogInformation("程序已經(jīng)啟動(dòng),swagger地址:localhost:5179/swagger/index.html");
        app.Run();
    }
}

4、手動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表文件及手動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)模型

CREATE TABLE `account` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `username` varchar(50)  NOT NULL COMMENT '用戶名',
  `password` varchar(255)  NOT NULL COMMENT '密碼',
  `nickname` varchar(50)  DEFAULT NULL COMMENT '昵稱',
  `avatar` varchar(255)  DEFAULT NULL COMMENT '頭像',
  `email` varchar(100)  DEFAULT NULL COMMENT '郵箱',
  `phone` varchar(20)  DEFAULT NULL COMMENT '手機(jī)號(hào)',
  `status` bigint DEFAULT '1' COMMENT '狀態(tài) 1正常 2禁用',
  `created_at` bigint DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` bigint DEFAULT NULL COMMENT '更新時(shí)間',
  `deleted_at` datetime(3) DEFAULT NULL COMMENT '軟刪除',
  PRIMARY KEY (`id`),
  KEY `idx_account_deleted_at` (`deleted_at`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
using System;
using SqlSugar;
namespace Model.Entity
{
    [SugarTable("account")]
    public class AccountEntity
    {
        /// <summary>
        /// 主鍵
        /// </summary>
        [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
        public long Id { get; set; }
        /// <summary>
        /// 用戶名
        /// </summary>
        [SugarColumn(ColumnName = "username")]
        public string Username { get; set; }
        /// <summary>
        /// 密碼
        /// </summary>
        [SugarColumn(ColumnName = "password")]
        public string Password { get; set; }
        /// <summary>
        /// 昵稱
        /// </summary>
        [SugarColumn(ColumnName = "nickname")]
        public string Nickname { get; set; }
        /// <summary>
        /// 頭像
        /// </summary>
        [SugarColumn(ColumnName = "avatar")]
        public string Avatar { get; set; }
        /// <summary>
        /// 郵箱
        /// </summary>
        [SugarColumn(ColumnName = "email")]
        public string Email { get; set; }
        /// <summary>
        /// 手機(jī)號(hào)
        /// </summary>
        [SugarColumn(ColumnName = "phone")]
        public string Phone { get; set; }
        /// <summary>
        /// 狀態(tài) 1正常 2禁用
        /// </summary>
        [SugarColumn(ColumnName = "status")]
        public int? Status { get; set; }
        /// <summary>
        /// 創(chuàng)建時(shí)間
        /// </summary>
        [SugarColumn(ColumnName = "created_at")]
        public long? CreatedAt { get; set; }
        /// <summary>
        /// 更新時(shí)間
        /// </summary>
        [SugarColumn(ColumnName = "updated_at")]
        public long? UpdatedAt { get; set; }
        /// <summary>
        /// 軟刪除
        /// </summary>
        [SugarColumn(ColumnName = "deleted_at")]
        public DateTime? DeletedAt { get; set; }
    }
}

5、在控制器中使用SqlSugar來(lái)對(duì)數(shù)據(jù)庫(kù)的操作

/// <summary>
/// 賬戶管理接口
/// </summary>
[ApiController]
[Route("api/[controller]")]
[Produces("application/json")]
public class AccountController : ControllerBase
{
    private readonly ISqlSugarClient _db;
    /// <summary>
    /// 依賴注入
    /// </summary>
    public AccountController(ISqlSugarClient db)
    {
        _db = db;
    }
    /// <summary>
    /// 創(chuàng)建賬戶
    /// </summary>
    /// <param name="dto">創(chuàng)建賬戶的信息</param>
    /// <returns>新創(chuàng)建的賬戶ID</returns>
    /// <remarks>
    /// 示例請(qǐng)求:
    /// POST /api/account
    /// {
    ///     "username": "testuser",
    ///     "password": "123456",
    ///     "nickname": "測(cè)試用戶",
    ///     "email": "test@example.com",
    ///     "phone": "13800138000",
    ///     "status": 1
    /// }
    /// </remarks>
    [HttpPost]
    [ProducesResponseType(typeof(ApiResult), StatusCodes.Status200OK)]
    [ProducesResponseType(typeof(ApiResult), StatusCodes.Status400BadRequest)]
    public async Task<ApiResult> Create([FromBody] CreateAccountDTO dto)
    {
        // 參數(shù)校驗(yàn)
        if (string.IsNullOrWhiteSpace(dto.Username))
        {
            return ResultHelper.Error("用戶名不能為空");
        }
        if (string.IsNullOrWhiteSpace(dto.Password))
        {
            return ResultHelper.Error("密碼不能為空");
        }
        // 檢查用戶名是否已存在
        var exists = await _db.Queryable<AccountEntity>()
            .Where(x => x.Username == dto.Username && x.DeletedAt == null)
            .AnyAsync();
        if (exists)
        {
            return ResultHelper.Error("用戶名已存在");
        }
        // 創(chuàng)建實(shí)體
        var entity = new AccountEntity
        {
            Username = dto.Username,
            Password = dto.Password,
            Nickname = dto.Nickname,
            Avatar = dto.Avatar,
            Email = dto.Email,
            Phone = dto.Phone,
            Status = dto.Status ?? 1,
            CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
            UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
        };
        // 插入并獲取返回的ID(雪花ID)
        var insertResult = await _db.Insertable(entity).ExecuteReturnEntityAsync();
        var id = insertResult.Id;
        return ResultHelper.Success(new { Id = id });
    }
}

二、配置由數(shù)據(jù)庫(kù)文件來(lái)生成對(duì)應(yīng)的數(shù)據(jù)模型

1、創(chuàng)建一個(gè)工具類

using System.Text;
using SqlSugar;

namespace study_demo10_orm.Utils;

/// <summary>
/// 代碼生成器工具類
/// 用于根據(jù)數(shù)據(jù)庫(kù)表結(jié)構(gòu)自動(dòng)生成對(duì)應(yīng)的實(shí)體類
/// </summary>
public class Generator
{
    /// <summary>
    /// 生成實(shí)體類文件
    /// </summary>
    /// <param name="db">SqlSugar數(shù)據(jù)庫(kù)實(shí)例</param>
    /// <param name="outputPath">輸出目錄路徑</param>
    /// <param name="namespaceName">命名空間名稱</param>
    /// <param name="tables">指定要生成的表名數(shù)組,為空則生成所有表</param>
    public static void GenerateEntities(ISqlSugarClient db, string outputPath, string namespaceName, params string[] tables)
    {
        // 確保輸出目錄存在,不存在則創(chuàng)建
        Directory.CreateDirectory(outputPath);

        // 獲取要生成的表列表:如果指定了表名則使用指定表,否則獲取所有表
        var tableList = tables?.Length > 0
            ? tables.ToList()
            : db.DbMaintenance.GetTableInfoList().Select(t => t.Name).ToList();

        // 遍歷每個(gè)表生成對(duì)應(yīng)的實(shí)體類
        foreach (var table in tableList)
        {
            // 獲取表的所有列信息
            var columns = db.DbMaintenance.GetColumnInfosByTableName(table, false);
            // 將表名轉(zhuǎn)換為PascalCase作為類名(如下劃線轉(zhuǎn)駝峰)
            var className = ToPascalCase(table) + "Entity";

            var sb = new StringBuilder();

            // 生成文件頭部的警告注釋(表示是自動(dòng)生成的)
            sb.AppendLine("http:// <auto-generated />");
            sb.AppendLine("http:// 此文件由代碼生成器自動(dòng)創(chuàng)建,請(qǐng)勿手動(dòng)修改!");
            sb.AppendLine();
            sb.AppendLine("using System;");
            sb.AppendLine("using SqlSugar;");
            sb.AppendLine();
            sb.AppendLine($"namespace {namespaceName}");
            sb.AppendLine("{");

            // 生成類聲明和SugarTable特性
            sb.AppendLine($"    [SugarTable(\"{table}\")]");
            sb.AppendLine($"    public class {className}");
            sb.AppendLine("    {");

            // 遍歷每列生成屬性
            foreach (var col in columns)
            {
                // 獲取CLR類型和屬性名
                var clrType = GetClrType(col.DataType, col.IsNullable, col.DbColumnName);
                var propertyName = ToPascalCase(col.DbColumnName);

                // 添加X(jué)ML文檔注釋(字段描述)
                sb.AppendLine("        /// <summary>");
                sb.AppendLine($"        /// {col.ColumnDescription}");
                sb.AppendLine("        /// </summary>");

                // 構(gòu)建SugarColumn特性參數(shù)
                var attrParts = new List<string>
                {
                    $"ColumnName = \"{col.DbColumnName}\""
                };
                // 主鍵標(biāo)記
                if (col.IsPrimarykey) attrParts.Add("IsPrimaryKey = true");

                // 注意:MySQL AUTO_INCREMENT 不需要 IsIdentity(那是雪花ID用的)
                // 如果需要雪花ID,請(qǐng)?jiān)跇I(yè)務(wù)代碼中手動(dòng)設(shè)置
                if (col.IsIdentity) attrParts.Add("IsIdentity = true");

                // 輸出SugarColumn特性
                var attrStr = $"[SugarColumn({string.Join(", ", attrParts)})]";
                sb.AppendLine($"        {attrStr}");
                sb.AppendLine($"        public {clrType} {propertyName} {{ get; set; }}");
                sb.AppendLine();
            }

            sb.AppendLine("    }");
            sb.AppendLine("}");

            // 寫入文件
            var filePath = Path.Combine(outputPath, $"{className}.cs");
            File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);

            Console.WriteLine($"Generated: {className}.cs");
        }

        Console.WriteLine($"Total generated: {tableList.Count} files");
    }

    /// <summary>
    /// 將下劃線/連字符命名轉(zhuǎn)換為PascalCase命名
    /// 例如: user_info -> UserInfo, hello-world -> HelloWorld
    /// </summary>
    /// <param name="name">原始名稱</param>
    /// <returns>轉(zhuǎn)換后的PascalCase名稱</returns>
    private static string ToPascalCase(string name)
    {
        if (string.IsNullOrWhiteSpace(name)) return name;

        // 按下劃線和連字符分割
        var parts = name.Split(new[] { '_', '-' }, StringSplitOptions.RemoveEmptyEntries);
        // 將每部分首字母大寫后拼接
        return string.Join("", parts.Select(p => char.ToUpper(p[0]) + p.Substring(1)));
    }

    /// <summary>
    /// 將數(shù)據(jù)庫(kù)類型轉(zhuǎn)換為C# CLR類型
    /// </summary>
    /// <param name="dbType">數(shù)據(jù)庫(kù)中的數(shù)據(jù)類型</param>
    /// <param name="isNullable">是否可為空</param>
    /// <returns>C#類型名稱</returns>
    private static string GetClrType(string dbType, bool isNullable, string columnName = "")
    {
        dbType = dbType.ToLower();

        // 根據(jù)數(shù)據(jù)庫(kù)類型映射到CLR類型
        string result = dbType switch
        {
            "int" or "int unsigned" or "integer" => "int",
            "bigint" or "bigint unsigned" => "long",
            "tinyint" or "tinyint unsigned" => "int",
            "smallint" or "smallint unsigned" => "short",
            "bit" => "bool",
            "float" or "float unsigned" => "float",
            "double" or "double unsigned" => "double",
            "decimal" or "numeric" or "dec" or "fixed" => "decimal",
            "date" or "datetime" or "timestamp" or "time" => "DateTime",
            "char" or "varchar" or "text" or "longtext" or "mediumtext" or "tinytext" or "nchar" or "nvarchar" => "string",
            "blob" or "longblob" or "mediumblob" or "tinyblob" or "varbinary" or "binary" => "byte[]",
            _ => "string"
        };

        // 根據(jù)字段名推斷類型(當(dāng)數(shù)據(jù)庫(kù)類型不準(zhǔn)確時(shí))
        var lowerName = columnName.ToLower();
        if (result == "long" && lowerName.Contains("status"))
        {
            result = "int";
        }
        // 注意:不再?gòu)?qiáng)制 id 為 long,使用數(shù)據(jù)庫(kù)實(shí)際類型

        // 判斷是否為值類型(值類型才能加可空標(biāo)記?)
        var isValueType = result != "string" && result != "byte[]";

        // 值類型可空時(shí)加?后綴(如 int?)
        if (isNullable && isValueType) result += "?";

        return result;
    }
}

2、在入口文件里面配置這個(gè)

...
  // 配置數(shù)據(jù)庫(kù)生成模型的
  if (args.Contains("gen-model"))
  {
      using var scope = app.Services.CreateScope();
      var db = scope.ServiceProvider.GetRequiredService<ISqlSugarClient>();

      // 獲取項(xiàng)目根目錄的相對(duì)路徑 (從 bin/Debug/net10.0 回退3級(jí))
      var projectRoot = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", ".."));
      var modelPath = Path.Combine(projectRoot, "Model", "Entity");

      Generator.GenerateEntities(
          db,
          outputPath: modelPath,
          namespaceName: "Model.Entity",
          tables: Array.Empty<string>()
      );
      return; 
  }
...

3、配置Makefile文件方便一件來(lái)操作

.PHONY: gen-model run
# 生成數(shù)據(jù)庫(kù)模型
gen-model:
	dotnet run --project . -- gen-model
# 運(yùn)行項(xiàng)目
run:
	dotnet run --project .

三、配置直接的時(shí)候輸出打印的sql方便排查錯(cuò)誤

1、直接在入庫(kù)配置地方配置

...
  // 配置數(shù)據(jù)庫(kù)連接
  builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
  builder.Host.ConfigureContainer<ContainerBuilder>(container =>
  {
      // 使用Autofac 容器注冊(cè)一個(gè)對(duì)象
      container.Register(_ =>
      {
          var connectionString = builder.Configuration.GetConnectionString("MySqlConnection")
              ?? "Server=localhost;Database=test;Uid=root;Pwd=123456;Port=3306;";
          var db = new SqlSugarClient(new ConnectionConfig()
          {
              ConnectionString = connectionString, // 數(shù)據(jù)庫(kù)地址字符串
              DbType = DbType.MySql, // 指定數(shù)據(jù)庫(kù)是mysql
              IsAutoCloseConnection = true, // 自動(dòng)關(guān)閉連接
              InitKeyType = InitKeyType.Attribute,
              MoreSettings = new ConnMoreSettings()
              {
                  IsAutoRemoveDataCache = true // 數(shù)據(jù)變更時(shí)自動(dòng)清理緩存
              }
          });

          // 配置SQL日志打印(點(diǎn)擊可跳轉(zhuǎn)到執(zhí)行文件)
          db.Aop.OnLogExecuting = (sql, pars) =>
          {
              // 獲取調(diào)用棧信息
              var stackTrace = new System.Diagnostics.StackTrace(true);
              var frames = stackTrace.GetFrames();
              string? filePath = null;
              int lineNumber = 0;
              string? methodName = null;

              if (frames.Length > 0)
              {
                  // 打印所有幀用于調(diào)試(注釋掉正常后)
                  // for (int i = 0; i < Math.Min(frames.Length, 15); i++)
                  // {
                  //     var frame = frames[i];
                  //     Console.WriteLine($"  Frame[{i}]: {frame.GetMethod()?.DeclaringType}.{frame.GetMethod()?.Name} at {frame.GetFileName()}:{frame.GetFileLineNumber()}");
                  // }

                  // 遍歷找到第一個(gè)有文件信息的非 SqlSugar/Microsoft 幀
                  // 通常在 5-15 幀范圍內(nèi)能找到業(yè)務(wù)代碼
                  for (int i = 0; i < frames.Length; i++)
                  {
                      var frame = frames[i];
                      var method = frame.GetMethod();
                      if (method == null) continue;

                      var declaringType = method.DeclaringType?.FullName ?? "";
                      var name = method.Name;

                      // 跳過(guò)內(nèi)部框架類
                      if (declaringType.StartsWith("SqlSugar") ||
                          declaringType.StartsWith("Microsoft") ||
                          declaringType.StartsWith("System") ||
                          declaringType.StartsWith("Autofac"))
                      {
                          continue;
                      }

                      // 跳過(guò)編譯器生成的匿名類和方法(如 lambda)
                      // 匿名方法通常名稱包含 <> 或開頭是 <
                      if (name.Contains('<') || name.Contains("<>"))
                      {
                          continue;
                      }

                      var fileName = frame.GetFileName();
                      var line = frame.GetFileLineNumber();

                      // 找到第一個(gè)有有效文件信息的幀
                      if (!string.IsNullOrEmpty(fileName))
                      {
                          filePath = fileName;
                          lineNumber = line > 0 ? line : 0;
                          methodName = $"{declaringType}.{name}";
                          break;
                      }
                  }
              }

              // Rider 格式輸出: --> file.cs(line)
              if (filePath != null && lineNumber > 0)
              {
                  Console.WriteLine($" --> {filePath}({lineNumber}) [{methodName}]");
              }
              else if (filePath != null)
              {
                  Console.WriteLine($" --> {filePath} [no line info] [{methodName}]");
              }

              // 打印可直接執(zhí)行的SQL(將參數(shù)值替換到SQL中)
              var executableSql = sql;
              if (pars != null && pars.Length > 0)
              {
                  foreach (var p in pars)
                  {
                      var value = p.Value;
                      if (value == null)
                      {
                          executableSql = executableSql.Replace(p.ParameterName, "NULL");
                      }
                      else if (value is string || value is DateTime)
                      {
                          executableSql = executableSql.Replace(p.ParameterName, $"'{value}'");
                      }
                      else
                      {
                          executableSql = executableSql.Replace(p.ParameterName, value.ToString() ?? "NULL");
                      }
                  }
              }
              Console.WriteLine($"SQL: {executableSql}");
              Console.WriteLine();
          };

          // 錯(cuò)誤日志
          db.Aop.OnError = (exp) =>
          {
              Console.WriteLine($"SQL Error: {exp.Message}");
              Console.WriteLine($"SQL: {exp.Sql}");
          };

          return db;
      }).As<ISqlSugarClient>().InstancePerLifetimeScope();
  });
...

四、設(shè)置創(chuàng)建時(shí)間和更新時(shí)間

1、配置代碼生成器中創(chuàng)建和更新時(shí)間字段

if (col.IsIdentity) attrParts.Add("IsIdentity = true");
// 自動(dòng)時(shí)間戳字段處理
var lowerColName = col.DbColumnName.ToLower();
if (lowerColName == "created_at")
{
    // 創(chuàng)建時(shí)間:插入時(shí)自動(dòng)填充
    attrParts.Add("InsertServerTime = true");
}
else if (lowerColName == "updated_at")
{
    // 更新時(shí)間:插入和更新時(shí)自動(dòng)填充
    attrParts.Add("InsertServerTime = true");
    attrParts.Add("UpdateServerTime = true");
}

2、重新生成的數(shù)據(jù)模型

/// <summary>
/// 創(chuàng)建時(shí)間
/// </summary>
[SugarColumn(ColumnName = "created_at", InsertServerTime = true)]
public DateTime CreatedAt { get; set; }

/// <summary>
/// 更新時(shí)間
/// </summary>
[SugarColumn(ColumnName = "updated_at", InsertServerTime = true, UpdateServerTime = true)]
public DateTime UpdatedAt { get; set; }

五、配置邏輯刪除字段

1、定義一個(gè)接口

public interface ISoftDelete
{
    DateTime? DeletedAt { get; set; }
}

2、自己定義的實(shí)體類都實(shí)現(xiàn)這個(gè)接口

namespace Model.Entity
{
    [SugarTable("user")]
    public class UserEntity:ISoftDelete
    {
        /// <summary>
        /// 主鍵id
        /// </summary>
        [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }
    }
}

3、在入口文件中使用過(guò)濾器

// 配置邏輯刪除
db.QueryFilter.AddTableFilter<ISoftDelete>(it => it.DeletedAt == null);

4、驗(yàn)證查詢數(shù)據(jù)的時(shí)候,查看執(zhí)行的sql,自動(dòng)加上了邏輯刪除的字段

[HttpGet("{id}")]
public async Task<ApiResult> GetById(int id)
{
    var task = await _db.Queryable<UserEntity>().Where(x=>x.Id==id).FirstAsync();
    return ResultHelper.Success(task);
}

5、如果想要查詢邏輯刪除的數(shù)據(jù)

[HttpGet("{id}")]
public async Task<ApiResult> GetById(int id)
{
    // var task = await _db.Queryable<UserEntity>().Where(x=>x.Id==id).FirstAsync();
    var task = await _db.Queryable<UserEntity>()
        .Filter(null,true)
        .Where(x=>x.Id==id)
        .FirstAsync();
    return ResultHelper.Success(task);
}

6、使用邏輯刪除數(shù)據(jù)(這里要使用更新操作)

[HttpDelete("{id}")]
public async Task<ApiResult> Delete(int id)
{
    await _db.Updateable<UserEntity>()
        .SetColumns(it => it.DeletedAt == DateTime.Now)
        .Where(x => x.Id == id)
        .ExecuteCommandAsync();

    return ResultHelper.Success(new { Id = id });
}

到此這篇關(guān)于C#使用sqlSugar操作mysql數(shù)據(jù)庫(kù)的完整教程的文章就介紹到這了,更多相關(guān)C# sqlSugar操作mysql數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

新宾| 漠河县| 宿州市| 潼关县| 富裕县| 乐业县| 宽城| 鹤山市| 轮台县| 东安县| 察哈| 崇信县| 忻州市| 安康市| 朝阳区| 五原县| 西宁市| 平罗县| 石柱| 石林| 海丰县| 平果县| 克东县| 马尔康县| 平安县| 原阳县| 明光市| 宣武区| 公安县| 三都| 龙游县| 阜宁县| 北川| 绥芬河市| 盐源县| 临沂市| 神池县| 平和县| 洪雅县| 台州市| 长泰县|