发布时间: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方法描述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{}