
ASP.NET Core
算盘
喜欢徒步,喜欢读书
展开
-
使用EFCore更新数据库的问题
将画圈的地方,true改成false。原创 2024-01-30 15:07:34 · 536 阅读 · 0 评论 -
.NetCore的贫血模型和充血模型
.NetCore的贫血模型和充血模型原创 2023-03-03 13:38:51 · 225 阅读 · 0 评论 -
ASP.NETCore——JWT
ASP.NETCore——JWT原创 2023-02-05 10:11:14 · 432 阅读 · 0 评论 -
ASP.NETCore中的Identity
Identity原创 2023-01-18 14:09:56 · 276 阅读 · 0 评论 -
ASP.NET Core中间件
中间件原创 2023-01-08 15:09:29 · 139 阅读 · 0 评论 -
ASP.NETCore异常Filter
异常Filter原创 2023-01-02 21:49:51 · 199 阅读 · 0 评论 -
ASP.NET Core分布式缓存
分布式缓存原创 2022-12-29 10:22:23 · 239 阅读 · 0 评论 -
ASP.NET Core中的缓存
缓存原创 2022-12-02 15:19:48 · 622 阅读 · 0 评论 -
Singleton、Scoped、Transient 的应用情景有哪些
Scoped、Transient的区别是你在同一个上下文中是否期望使用同一个实例,如果是,用Scoped,反之则使用Transient。对于对象依赖了处理上下文,或者使用了有限资源(如数据库连接),一般使用Scoped或者Transient。对于方法都是线程安全的类型,一般使用单例。原创 2022-11-04 10:03:45 · 556 阅读 · 0 评论 -
ASP.NET Core Web API Action方法参数
Web API Action原创 2022-10-29 11:06:12 · 557 阅读 · 0 评论 -
ACTION方法的异步
ACTION原创 2022-10-15 14:46:03 · 502 阅读 · 0 评论 -
ASP.NETCore中REST落地指南
REST落地指南原创 2022-10-08 10:13:10 · 167 阅读 · 0 评论 -
Restful中如何传递参数
Restful传递参数原创 2022-10-01 10:14:47 · 401 阅读 · 0 评论 -
有关REST的一些内容
REST原创 2022-09-21 18:16:01 · 282 阅读 · 0 评论 -
EFCore分页查询
分页原创 2022-09-16 21:26:02 · 262 阅读 · 0 评论 -
EFCore额外的外键字段
EFCore 外键原创 2022-09-03 09:42:26 · 594 阅读 · 0 评论 -
EFCore一对多关系配置
EFCore一对多关系配置原创 2022-08-15 11:44:31 · 363 阅读 · 0 评论 -
通过代码查看EFCore的SQL语句
EFCore的SQL语句原创 2022-08-06 16:14:48 · 1012 阅读 · 0 评论 -
EFCore 反向工程
反向工程原创 2022-08-01 09:30:30 · 387 阅读 · 0 评论 -
EFCore Migrations的深入研究
Migrations原创 2022-07-26 09:39:35 · 528 阅读 · 0 评论 -
Guid主键
主题原创 2022-07-05 15:28:30 · 576 阅读 · 0 评论 -
EFCore中的主键
主键原创 2022-06-21 13:53:01 · 1738 阅读 · 0 评论 -
EFCore中数据表的两种配置方式
配置方式原创 2022-06-09 19:53:51 · 450 阅读 · 0 评论 -
EFCore的一些约定配置
1、表名采用DbContext中的对应的DbSet的属性名2、数据表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型最兼容的类型3、数据表列的可空性取决于对应实体类属性的可空性4、名字为Id的属性为主键,如果主键为short、int或者long类型,则默认采用自增字段,如果主键为Guid类型,则默认采用默认的Guid生成机制生成主键值原创 2022-06-01 19:53:16 · 742 阅读 · 0 评论 -
.NET配置系统
配置源原创 2022-07-05 15:29:11 · 177 阅读 · 0 评论 -
.NET日志系统
1、日志级别:Trace < Debug < Information < Warning < Error < Critical2、日志提供者(LoggingProvider):把日志输出到哪里。控制台、文件、数据库等3、.NET的日志非常灵活,对应业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么样的格式、是否输出等都有配置或者初始化代码块决定...原创 2022-05-28 21:51:49 · 401 阅读 · 0 评论 -
EFCore中的表达式树
1、表达式树(Expression Tree):树形数据结构表示代码,以表示逻辑运算,以便可以在运行时访问逻辑运算的结构2、Expression<TDelegate>类型3、从Lambda表达式来生成表达式树Expression<Func<Book,bool>> e = b =>b.Price > 5;...原创 2022-05-19 23:28:39 · 451 阅读 · 0 评论 -
EFCore乐观并发控制:并发令牌
乐观并发控制的原理Update T_Table set Owner = 新值 where Id = 1 and Owner = 旧值当Update的时候,如果数据库中的Owner值已经被其他操作者更新为了其他值了,那么where语句的值就会为false,因此这个Update语句影响了行数就是0,EFCore就知道"发生并发冲突"了。因此SaveChanges()方法就会抛出DbUpdateConcurrencyException异常。乐观并发控制:RowVersion将在要控制并发的类里面加上一个原创 2022-05-07 21:17:13 · 498 阅读 · 0 评论 -
EFCore悲观并发控制
并发控制的概念1、并发控制:避免多个用户同时操作资源造成的并发冲突问题。举例:统计点击量2、最好的解决方案:非数据库解决方案3、数据库层面的两种策略:悲观、乐观1、悲观并发控制一般采用行锁、表锁等排他锁对资源进行锁定,确保同时只有一个使用者操作被锁定的资源2、EFCore没有封装悲观并发控制的使用,需要开发人员编写原生SQL语句来使用悲观并发控制。不同数据库的语法不一样3、悲观并发控制的使用比较简单4、锁是独占、排他的,如果系统并发量很大的话,会严重影响性能,如果使用不当的话,甚至会原创 2022-05-02 13:56:46 · 1151 阅读 · 0 评论 -
EFCore全局查询筛选器
1、申请方式的不同。栈由系统自动分配,而堆是人为申请开辟;2、申请大小的不同。栈获得的空间较小,而堆获得的空间较大;3、申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢;4、存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;5、底层不同。栈是连续的空间,而堆是不连续的空间。...原创 2022-04-20 13:51:00 · 325 阅读 · 0 评论 -
EFCore优化之AsNoTracking
快照更改跟踪1、如果通过DbContext查询出来的对象只是用来展示不会发生状态改变,则可以使用AsNoTracking()来"禁用跟踪"2、分别加AsNoTracking()和不加,分别查看一个对象修改后的EntityEntry信息3、如果查询出来的对象不会被修改、删除等,那么查询是可以AsNoTracking(),就能降低内存占用...原创 2022-04-20 13:48:49 · 1538 阅读 · 0 评论 -
EFCore如何知道实体数据变了
快照更改跟踪:首次跟踪一个实体的时候,EFCore会创建这个实体的快照。执行SaveChanges()等方法时,EFCore将会把存储的快照中的值与实体的当前值进行比较。实体的状态已添加(Added):DbContext正在跟踪此实体,但数据库中尚不存在该实体未改变(Unchanged):DbContext正在跟踪该实体,该实体存在于数据库中,其属性值和从数据库中读取到的值一致,未发生改变已修改(Modified):DbContext正在跟踪此实体,并存在于数据库中,并且其部分或全部属性值已原创 2022-04-11 13:39:37 · 1156 阅读 · 0 评论 -
如何异步遍历IQueryable
方式一:ToListAsync()、ToArrayAsync()。结果集不要太大方式二:await foreach(Book b in ctx.Books.AsAsyncEnumerable())不过,一般没必要这么做原创 2022-03-26 14:41:19 · 509 阅读 · 0 评论 -
IQueryable底层是如何读取数据的
对比1、DataReader:分批从数据库服务器读取数据。内存占用小、DB连接占用时间长2、DataTable:把所有数据都一次性从数据库服务器都加载到客户端内存中。内存占用大,节省DB连接验证IQueryable用什么方式1、用insert into select 多插入一些数据,然后加上Delay/Sleep的遍历IQueryable。在遍历执行的过程中,停止SQLServer服务器。IQueryable内部就是在调用DataReader2、有点:节省客户端内存;缺点:如果处理的满,会长原创 2022-03-23 17:49:12 · 1905 阅读 · 0 评论 -
EFCore中所谓IQueryable
1、IQueryable只是代表一个"可以放到数据库服务器去执行的查询",它没有立即执行,只是"可以被执行"而已2、对于IQueryable接口调用非终结方法的时候不会执行查询,而调用终结方法的时候则会立即执行查询3、终结方法:遍历、ToArray()、ToList()、Min()、Max()、Count()等4、非终结方法:GroupBy()、OrderBy()、Include()、Skip()、Take()等5、简单判断:一个方法的返回值类型如果是IQueryable类型,那么这个方法一原创 2022-03-17 11:00:54 · 1059 阅读 · 0 评论 -
EFCore中的IEnumerable和IQueryable的不同之处
不同的WHERE方法1、对普通集合和DbSet调用的Where方法,虽然用起来一样,但是"转到定义"后看到的是不同的方法2、普通集合的版本(IEnumerable)是在内存中过滤(客户端评估),而IQueryable版本则是把查询操作翻译成SQL语句(服务器端评估)...原创 2022-03-16 14:04:27 · 268 阅读 · 0 评论 -
async和await
async的方法会被C#编译器编译成一个类,会主要根据await调用进行切分为多个状态,对async方法的调用会被拆分为对MoveNext的调用。用await看似是"等待",经过编译后,其实没有"wait"原创 2022-03-14 15:16:44 · 113 阅读 · 0 评论 -
异步方法:用async关键字修饰的方法
1)异步方法的返回值一般是Task<T>,T是真正的返回值类型Task<int>。惯例:异步方法名字以Async结尾2)即使方法没有返回值,也最好把返回值声明为非泛型的Task3)调用异步方法时,一般在方法前加上await,这样拿到的返回值就是泛型指定的T类型4)异步方法的"传染性":一个方法中如果有await调用,则这个方法也必须修饰为async...原创 2022-03-11 22:29:00 · 702 阅读 · 0 评论 -
.NetCore中的缓存是什么?
1、缓存是一个独立的组件,存在于API和API消费者之间2、缓存接收API消费者的请求,并把请求发送给API3、缓存还从API接收响应并且如果响应是可缓存的就会把响应保存起来,并把响应返回给API的消费者。如果同一个请求再次发送,那么缓存就可能会把保存的响应返回给API消费者4、缓存可以看作是请求--响应通讯机制的中间人...原创 2021-07-07 20:21:35 · 355 阅读 · 0 评论 -
向API传入参数
attribute 参数来源[FromQuery] 请求url的参数字符串[FromBody] 请求主体数据[FromForm] 请求主体的表单数据(IFormFile、IFormFileCollection)[FromRoute] MVC架构下的Route路由URL的参数[FromService] 数据来源于以注入的服务依赖...原创 2021-06-22 10:12:24 · 819 阅读 · 0 评论