发布时间:2025-06-24 21:11:36  作者:北方职教升学中心  阅读量:816


项目架构示例

4、配置数据库链接字符串

代码部分:

{  "ConnectionStrings": {    "DefaultConnection": "server=.;uid=sa;pwd=123456;database=Test;Encrypt=True;TrustServerCertificate=True;"  }}
7、启用XML文档文件的生成

代码部分:

<!-- 启用XML文档文件的生成 --><GenerateDocumentationFile>true</GenerateDocumentationFile>
13、框架选择.NET 6.0 版本

3、打开VS2022,创建.NET Core WebAPI项目

2、添加用户表的业务逻辑

代码部分:

public class UserService : BaseService, IUserService{    private readonly ISqlSugarClient _db;    /// <summary>    /// 构造函数    /// </summary>    /// <param name="db"></param>    public UserService(ISqlSugarClient db)    {        this._db = db;    }         /// <summary>    /// 查询用户信息    /// </summary>    /// <returns></returns>    public List<UserEntity> GetUserList()    {        return _db.Queryable<UserEntity>().ToList();    }    /// <summary>    /// 新增用户    /// </summary>    /// <param name="entity"></param>    /// <returns></returns>    public int InsertUserInfo(UserEntity entity)    {        return _db.Insertable(entity).ExecuteCommand();    }    /// <summary>    /// 修改用户    /// </summary>    /// <param name="entity"></param>    /// <returns></returns>    public int UpdateUserInfo(UserEntity entity)    {        return _db.Updateable(entity).ExecuteCommand();    }    /// <summary>    /// 删除用户    /// </summary>    /// <param name="id"></param>    /// <returns></returns>    public int DeleteUserInfo(string id)    {        return _db.Deleteable<UserEntity>().Where(it => it.Id == id).ExecuteCommand();    }}
9、添加用户表实体类

代码部分:

[SugarTable("User")]//当和数据库名称不一样可以设置表别名 指定表明public class UserEntity : UserInfoBase{    [SugarColumn(IsPrimaryKey = true)]//主键    public string Id { get; set; }    public string? UserName { get; set; }    public string? UserPassWord { get; set; }    public string? Phone { get; set; }    public string? Remark { get; set; }}
8、注册SqlSugar和Service

6、配置数据库链接字符串

7、添加控制器

代码部分:

[ApiController][Route("api/[controller]/[action]")]public class UserController : Controller{    private readonly IUserService _service;    /// <summary>    /// 构造函数    /// </summary>    public UserController(IUserService service)    {        this._service = service;    }    /// <summary>    /// 查询用户信息    /// </summary>    /// <returns></returns>    [HttpGet]    public IActionResult GetUserList()    {        var user = _service.GetUserList();        return Ok(user);    }    /// <summary>    /// 新增用户    /// </summary>    /// <returns></returns>    [HttpPost]    public IActionResult InsertUserInfo(UserEntity entity)    {        var user = _service.InsertUserInfo(entity);        return Ok(user > 0 ? "新增成功" : "新增失败");    }    /// <summary>    /// 修改用户    /// </summary>    /// <returns></returns>    [HttpPost]    public IActionResult UpdateUserInfo(UserEntity entity)    {        var user = _service.UpdateUserInfo(entity);        return Ok(user > 0 ? "修改成功" : "修改失败");    }    /// <summary>    /// 删除用户    /// </summary>    /// <returns></returns>    [HttpPost]    public IActionResult DeleteUserInfo(string id)    {        var user = _service.DeleteUserInfo(id);        return Ok(user > 0 ? "删除成功" : "删除失败");    }}
11、打开VS2022,创建.NET Core WebAPI项目

2、添加用户表的业务逻辑

9、项目架构示例

4、启用XML文档文件的生成

13、自动插入值(根据实际需求添加,实体类需要继承UserInfoBase)

1、添加用户表的业务逻辑接口

代码部分:

public interface IUserService{    List<UserEntity> GetUserList();    int InsertUserInfo(UserEntity entity);    int UpdateUserInfo(UserEntity entity);    int DeleteUserInfo(string id);}
10、添加用户表实体类

8、添加控制器

11、添加用户表的业务逻辑接口

10、

目录

1、自动插入值(根据实际需求添加,实体类需要继承UserInfoBase)

[SugarTable("User")]//当和数据库名称不一样可以设置表别名 指定表明public class UserEntity : UserInfoBase{    [SugarColumn(IsPrimaryKey = true)]//主键    public string Id { get; set; }    public string? UserName { get; set; }    public string? UserPassWord { get; set; }    public string? Phone { get; set; }    public string? Remark { get; set; }}public class UserInfoBase{    /// <summary>    /// 创建时间    /// </summary>    public DateTime? CreateDate { get; set; }    /// <summary>    /// 创建人ID    /// </summary>    public string? CreateUserId { get; set; }    /// <summary>    /// 创建人     /// </summary>    public string? CreateUserName { get; set; }    /// <summary>    /// 更新时间    /// </summary>    public DateTime? ModifyDate { get; set; }    /// <summary>    /// 更新人ID    /// </summary>    public string? ModifyUserId { get; set; }    /// <summary>    /// 更新人    /// </summary>    public string? ModifyUserName { get; set; }}#region 自动填充当前用户信息//数据处理事件(oldValue表示当前字段值) db.Aop.DataExecuting = (oldValue, entityInfo) =>{    //新增事件    if (entityInfo.OperationType == DataFilterType.InsertByObject)    {        //如果该列是主键        if (entityInfo.EntityColumnInfo.IsPrimarykey)        {            if (oldValue == null || string.IsNullOrEmpty(oldValue.ToString()))            {                entityInfo.SetValue(Guid.NewGuid().ToString());//修改主键字段            }        }        if (entityInfo.PropertyName == "CreateDate")        {            entityInfo.SetValue(DateTime.Now);//修改CreateDate字段        }        if (entityInfo.PropertyName == "CreateUserId")        {            entityInfo.SetValue("CreateId");//修改CreateUserId字段        }        if (entityInfo.PropertyName == "CreateUserName")        {            entityInfo.SetValue("CreateName");//修改CreateUserName字段        }    }    //修改事件    if (entityInfo.OperationType == DataFilterType.UpdateByObject)    {        if (entityInfo.PropertyName == "ModifyDate")        {            entityInfo.SetValue(DateTime.Now);//修改ModifyDate字段        }        if (entityInfo.PropertyName == "ModifyUserId")        {            entityInfo.SetValue("ModifyId");//修改ModifyUserId字段        }        if (entityInfo.PropertyName == "ModifyUserName")        {            entityInfo.SetValue("ModifyName");//修改ModifyUserName字段        }    }};#endregion

补充:添加Swagger方法描述(默认的AddSwaggerGen方法不会自带方法描述)

代码部分:

//添加Swagger方法描述builder.Services.AddSwaggerGen(c =>{    c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });    // 如果需要,可以在这里添加额外的配置    // 例如,添加注释支持    var xmlFile = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);    c.IncludeXmlComments(xmlPath);});
12、补充:添加Swagger方法描述(默认的AddSwaggerGen方法不会自带方法描述)

12、添加SqlSugarCore NuGet包

5、框架选择.NET 6.0 版本

3、添加SqlSugarCore NuGet包

5、注册SqlSugar和Service

代码部分:附带ServicesHelper类和BaseService基类

#region 注册SqlSugar和Service//注册SqlSugarbuilder.Services.AddSingleton<ISqlSugarClient>(s =>{    SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()    {        ConnectionString = builder.Configuration.GetConnectionString("DefaultConnection"),//连接符字串        DbType = DbType.SqlServer,//数据库类型        IsAutoCloseConnection = true //不设成true要手动close    },    db =>    {        //控制台输出SQL语句        db.Aop.OnLogExecuting = (sql, pars) =>        {            //Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));   //SqlSugar自带的方法无法自动填充参数            if (pars != null && pars.Length > 0)            {                for (int i = 0; i < pars.Length; i++)                {                    sql = sql.Replace(pars[i].ParameterName, pars[i].Value == null ? "" : "'" + pars[i].Value.ToString() + "'");                }            }            Console.WriteLine("Executing SQL: " + sql);        };    });    return sqlSugar;});// 批量注册所有BLL和Servicebuilder.Services.RegisterServices(Assembly.GetExecutingAssembly());#endregionpublic static class ServicesHelper{    // 扩展方法 RegisterServices,用于注册服务层(Service)的服务    public static IServiceCollection RegisterServices(this IServiceCollection services, Assembly assembly)    {        // 获取指定程序集中所有继承自 BaseService 的非抽象类        var serviceTypes = assembly.GetTypes()            .Where(t => t.IsClass && !t.IsAbstract && typeof(BaseService).IsAssignableFrom(t));        // 遍历所有找到的服务类        foreach (var serviceType in serviceTypes)        {            // 获取该类实现的第一个接口,接口名称应为 "I" + 类名            var interfaceType = serviceType.GetInterfaces().FirstOrDefault(i => i.Name == $"I{serviceType.Name}");            // 如果找到了对应的接口            if (interfaceType != null)            {                // 将接口和实现类注册为Scoped生命周期                services.AddScoped(interfaceType, serviceType);            }            else            {                // 如果没有找到对应的接口,直接注册实现类为Scoped生命周期                services.AddScoped(serviceType);            }        }        // 返回 IServiceCollection 实例,以便链式调用        return services;    }     }public class BaseService{}
6、