- 博客(48)
- 收藏
- 关注
原创 统一结果返回类和全局异常处理器以及自定义异常处理器
错误码(如400=参数错误,500=业务异常)</summary>/// <summary>默认错误码(400)的业务异常</summary>Code = 400;// 默认参数错误码/// <summary>自定义错误码的业务异常
2025-11-03 10:35:03
161
原创 在.NET Core Web Api中使用redis
在 Water.Api 项目中安装 Redis 客户端包:右键项目 → 管理 NuGet 包 → 安装 StackExchange.Redis(主流 Redis 客户端)。
2025-11-03 10:26:33
199
原创 在.NET Core Web Api中使用JWT并配置UserContext获取用户信息
安装依赖 → 2. 配置 JWT 参数 → 3. 注册认证服务 → 4. 封装 Token 生成工具 → 5. 登录接口生成 Token → 6. 受保护接口启用 [Authorize] → 7. 客户端携带 Token 请求。
2025-11-03 10:14:34
472
原创 .NET Core Web API开发需引入的三个基本依赖配置说明
Data 文件夹下的// 映射数据库表(DbSet<实体> 对应表名)set;set;// 其他表(如 Clazz、Student)按此格式添加。
2025-11-03 10:04:30
424
原创 多实现类(如IService有ServiceA/ServiceB)的注入配置与获取
/ 键:"ServiceA"builder.Services.AddKeyedScoped<IService, ServiceB>("ServiceB");// 键:"ServiceB"// 1. Program.cs 注册(给ServiceA/ServiceB分别加“标识”)// 注入的是IService的所有实现(包含ServiceA和ServiceB)
2025-11-02 23:21:10
260
原创 三种服务生命周期
AddTransient 每次获取服务(如GetService<T>()、构造函数注入)时,都创建新实例 轻量级、无复用必要的类(如临时数据验证类、单次使用的工具方法封装类)AddScoped 每次HTTP请求(或“作用域”)内创建1个实例,同一请求内复用,不同请求重新创建 有状态的业务类(如用户上下文、单次请求的事务处理类)AddSingleton 程序启动后创建1个实例,全局复用(直到程序关闭) 无状态的工具类(如日志工厂、配置读取类)、全局唯一的资源(如数据库连接池)
2025-11-02 23:20:04
289
原创 EF Core 数据库迁移
powershellpowershellAdd-Migration InitialCreate 和Update-Database 是 EF Core 中数据库迁移的核心命令,作用是将你的 C# 实体类结构同步到数据库表,实现 “代码定义模型 → 数据库自动建表” 的全流程。1. Add-Migration InitialCreate:生成 “迁移文件”2. Update-Database:执行迁移,同步到数据库总结:两步实现 “代码 → 数据库” 同步Student)会对应数据库中的。
2025-11-02 23:00:46
417
原创 EF Core 中手动配置表名、主键、外键、索引、关系等映射
配置类型数据注解(特性)Fluent API(示例)表名主键[Key]外键索引[Index]非空[Required]长度自增 / 默认值通过数据注解(简单直观,适合单实体配置)或Fluent API(灵活强大,适合复杂关系 / 全局配置),可以精准控制 EF Core 与数据库的映射逻辑,适配各种业务场景~
2025-11-02 22:56:26
635
原创 program.cs文件详解
只要开发ASP.NET Core 应用(Web API、MVC 网站等),就必须使用Program.cs。开发时,你不需要 “实例化” 或 “调用” 这个类,而是通过修改其中的代码来配置应用的启动逻辑,让应用按照你的需求运行。Main方法),负责启动应用、配置服务和请求处理管道。1. 添加数据库服务(如 EF Core)如果你的应用需要连接数据库,需要在。Program.cs是整个应用的入口点(类似 C# 控制台程序的。二、Program.cs的核心作用简单说,四、什么时候需要用Program.cs?
2025-11-02 22:49:24
669
原创 关于Dapper的使用
写 SQL → 传参数 → 执行 → 映射结果”。它的核心优势是灵活(支持任意复杂 SQL)、高效(性能接近原生ADO.NET)、轻量(无冗余依赖),适合对 SQL 可控性要求高、追求性能的业务场景。Dapper 的动态增删改查核心是 **“SQL 随参数动态拼接”**,结合@参数 IS NULL实现条件的 “有无切换”,再通过或匿名对象灵活传递参数。这种方式完全自主控制 SQL 逻辑,既保证了灵活性,又能最大化性能,适合对 SQL 精细度要求高的业务场景。方法核心用途返回值适用场景查多条数据。
2025-11-02 14:19:24
859
原创 多表分页联查——EF Core方式和Dapper方式
数据库OrderDetail → [映射配置] → 领域层OrderItem → 填充到领域Order的OrderItems → [映射配置] → VO层OrderItemVo → 填充到VO的Items。
2025-11-02 13:34:57
435
原创 .NET Core Web Api创建订单功能实现方法和加redis锁
【代码】.NET Core Web Api创建订单功能实现方法和加redis锁。
2025-11-01 21:20:38
273
原创 枚举类型的应用
文件位置作用:用枚举固化 “是否默认地址” 的业务状态,替代硬编码的01,提升业务可读性。csharp/// 地址默认状态(领域层枚举:定义核心业务状态)/// 非默认地址(对应值0)/// 默认地址(对应值1)业务语义清晰:代码中比1更易理解,减少 “猜数字含义” 的成本。编译时校验:若误写,编译器直接报错(枚举无此值),避免运行时错误。前后端一致:DTO 和 API 序列化配置确保前后端传递的是枚举值(0/1),兼容原有逻辑。可扩展性:若未来需新增 “待确认默认” 状态,只需在枚举中加。
2025-11-01 09:52:55
588
原创 C#里面的委托详解
用delegatedelegate 返回值类型 委托名(参数列表);示例:声明一个 “接收 int 参数、返回 string” 的委托csharp// 定义委托:规定方法必须是“int参数,string返回值”Action:无返回值的委托,支持 0~16 个参数(如Action示例:调用无返回值、带 1 个 string 参数的方法csharp// 等同于 Console.WriteLine("Hello Delegate")Func。
2025-10-31 14:24:43
459
原创 FirstOrDefault()的括号里面写条件啊,为什么还要用where
场景推荐写法理由简单单条件查单条直接在 FirstOrDefault 里写条件代码更短,直观多条件组合拆成多个 Where + FirstOrDefault逻辑清晰,避免括号臃肿同一筛选条件复用先 Where 定义,再多次使用减少重复代码,方便维护需要排序 / 分页后查单条Where + 排序 / 分页 + FirstOrDefault保证逻辑正确性(先筛后排,再取结果)条件简单用 “直接写”,条件复杂或要复用用 “Where”
2025-10-31 14:19:40
288
原创 EF Core 查询方法的核心区别
查单条 + 按主键→ 用Find;查单条 + 非主键 + 不要求唯一→ 用Where(条件).FirstOrDefault();查单条 + 非主键 + 必须唯一→ 用Where(条件).SingleOrDefault();查多条→ 用Where(条件).ToList()。
2025-10-31 14:17:11
268
原创 EF Core动态sql
优先用IQueryable动态拼接条件:安全、类型友好、无需手动写 SQL,适合 90% 以上的场景。避免直接拼接 SQL 字符串:风险高,除非必须(如超复杂查询),且一定要用参数化。核心技巧:利用IQueryable的延迟执行,按条件逐步添加WhereOrderBy,最后用执行。动态新增:通过条件判断给实体属性赋值,再调用Add。动态修改单实体:加载实体后,根据条件更新需要修改的字段,依赖 EF 自动跟踪。批量:用Where构建条件 +(高效,无需加载实体)。动态删除。
2025-10-31 14:11:51
671
原创 Vue.js高效前端开发
组件系统是Vue中一个重要的概念,它提供了一种抽象结构,可以使用独立和可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树组件是可复用的Vue实例组件应该挂载到某个Vue实例下,否则它不会生效。
2023-08-21 15:10:20
719
原创 Entity Framework数据持久化
委托是一种引用类型,他表示对具有特定参数列表和返回类型的方法的引用。在实例化委托时,可以将其实例与任何具有兼容签名和返回类型的方法相关联,可以通过委托实例调用方法,也可以使用委托将方法作为参数传递给其他方法。编写架构级代码,委托的使用将大大提高程序的可扩展性C#扩展方法是允许使用实例方法的调用语法来调用静态方法的语言功能。C#扩展方法至少有一个参数,C#扩展方法的第一个参数指定该方法作用于哪种类型,并且该参数以this修饰符为前缀。
2023-08-19 17:21:59
460
原创 ASP.NET MVC企业级程序设计
HTML辅助方法是用于辅助产生HTML的一组系统方法。使用HTML辅助方法能够帮助产生HTML标签和内容,以提高视图的开发速度,避免不必要的语法错误。HTML辅助方法封装在HtmlHepler类中,同时提供多个重载版本,以适应不同开发需求重载:同一个类中,方法名一样,参数不一样重写:子类重写父类方法框架定义的大多数辅助方法都是扩展方法——static修饰,加this,方法名称有一个向下的箭头。
2023-06-23 14:42:03
1312
原创 MySQL数据操作与查询笔记
创建Create读取Read更新Update删除Delete层次性数据库网络型数据库对象型数据库关系型数据库关系型数据库中表的每一列都有唯一的列名,且该列所有的数据均为同一种数据类型,列在表中的次序无关紧要;表中每一行代表一条记录,表中的任意两行记录不能完全相同,行在表中的顺序也不关紧要开放源码的小型关系型数据库管理系统单击开始——运行——输入services.msc——确定——找到MySQLwin+r——输入services.msc——确定——找到MySQL单击开始——运行——输入cmd——确定——输入n
2023-05-18 21:32:08
444
原创 JAVA程序设计基础笔记
访问修饰符 class 类名{//类的属性//类的方法访问修饰符 返回值类型 方法名(形式参数列表){方法体多个参数用逗号隔开数据类型 变量名=方法名(实际参数列表);访问修饰符 void 方法名(){方法体访问修饰符 void 方法名(形式参数列表){方法体访问修饰符 返回值类型 方法名(形式参数列表){方法体return 表达式;/return;数据类型 变量名=方法名(实际参数列表)
2023-05-11 18:49:55
351
原创 ASP.NET Web程序设计笔记
超文本传输协议最简单的ASP.NET模型内置了用于数据库、视频、社交媒体等的模板和帮助器传统的ASP.NET事件驱动开发模型添加了服务器控件、服务器事件以及服务器代码的网页3.1.3.MVCMVC编程模型是与传统的ASP.NET(Web Forms)相比更轻量级的替代方案轻量级的可测试性的框架,同时整合了所有已有的ASP.NET特性,比如模板页。安全性和认证CustomValidator控件用于执行自定义验证CustomValidator控件常用属性和事件属性说明。
2023-05-09 14:43:34
888
原创 jQuery笔记
jQuery是由美国人Joho Resig于2006年创建的一个JavaScript库,随着普及度的提高,越来越多的程序高手加入其中,完善并壮大其项目内容,如今已发展成集JavaScript、CSS、DOM和Ajax于一体的强大框架体系。主旨是以更少的代码,实现更多的功能。
2022-12-15 17:02:02
462
原创 JavaScript综合练习(验证登录、增加节点jQuery)
2.登录页面login.html,实现登录功能。要求邮箱输入框失焦时验证必须包含“@sw.com”,并且密码输入框失焦时验证长度大于6位,全为数字。6.系统首页index.html,完成歌曲新增功能,若新增歌曲信息框不为空,则将歌曲新增致歌曲列表并清空新增歌曲信息框。3.登录页面login.html,实现登录功能。5.系统首页index.html,完成歌曲新增功能,若新增歌曲信息框为空,则给出提示。4.点击“登录”按钮时,若验证全部通过,则提交至index.html页面,否则不提交。
2022-12-15 15:33:37
440
1
原创 jQuery实现电商网站购物车页面商品数量的增加和减少
利用jQuery操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变。当用户点击-按钮是,文本框中的商品数量减1(不能小于1),单项价格和总价相应减少。当用户点击+按钮是,文本框中的商品数量增加1,单项价格和总价相应增加。
2022-12-14 16:00:50
980
原创 JavaScript交互式网页设计笔记
function 函数名(形式参数1,形式参数2,...) {语句}a:使用function关键字,function后是函数名,函数不必说明返回值的类型b:函数的命名规则与变量名的命名规则相同c:函数名后的(),可以包含若干参数,也可以选择不带任何参数d:最后是一对{},包含具体实现特定功能的若干语句DOM是文档对象模型的简称。与浏览器对象模型关注浏览器的整体不同,文档对象模型只关注浏览器所载入的文档。文档对象模型组成:html元素、属性和文本。
2022-12-12 12:43:37
2709
1
原创 JavaScript验证用户输入的电子邮箱和密码是否合法
4.实现文本输入的即时提示效果,即当文本框失去焦点时,如格式不合法,提示原因。5.如果输入的邮箱地址密码均合法,则提交表单。1.邮箱地址和密码均不能为空。3.邮箱地址必须包含@和.2.密码不能少于6位。
2022-12-10 16:58:20
3592
原创 JavaScript的Date对象制作万年历
在页面上添加两个标签,用来显示年份和月份;同时添加两个标签,一个用来显示星期,另一个用来显示日期。在JavaScript脚本中动态添加年份和月份,获取当前日期的年份和月份,显示到标签上。根据标签上显示的value值,获取当前选中年月的第一天是星期几,并绘制空标签。获取当前选中的年月一共有多少天,并绘制对应的标签。为两个标签设置onchange时间。选择不同的年份和月份,在页面中显示当前月的日历。
2022-12-10 11:29:06
1035
1
原创 使用DOM节点的动态添加和删除向表格中插入删除数据
在插入数据按钮的事件处理函数中,使用document对象的getElementById、getElementsByTagName等属性获取输入框的值。在删除超链接的事件处理函数中,获取超链接的父节点td,继续获取父节点tr,在获取父节点table,然后将table节点中的tr节点删除。在页面中添加文本输入框和选项菜单,并提示用户输入,添加插入数据按钮,并添加点击事件。绘制表格,添加四条虚拟数据,在每条数据后使用超链接,并且添加超链接的点击事件。点击插入数据按钮,将输入框中的数据插入到表格中。
2022-12-09 19:01:31
1057
原创 JavaScript对象的创建及常用语句
用function创建类时,要求属性和方法必须使用this关键字来引用,表示当前类的实列with语句和for...in语句在一段连续的程序代码中,如果多次使用到某个对象的属性或方法,那只需在with关键字后的小括号中写出这个对象的名称,然后就可以在其后大括号里的执行语句中直接引用该对象的属性名或方法名,而不需要在每个属性和方法名前都加上对象实例和点(.)。对某个对象的所有属性进行循环操作,将某个对象的所有属性名称逐一赋值给一个变量,不需要事先知道对象属性的个数
2022-12-08 11:52:48
167
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅