摘要: 继续写点基础的东西,因为基础的东西能带新手入门,入门后的事情其实是比较简单的。 我们开发dotnet程序后运行时经常出问题,比如cpu高、内存高、崩溃等问题,分析的方法就是使用dotnet的那套分析工具,今天以dotnet-dump为例,简单说下从安装到收集的操作步骤。 1.安装SDK dotnet 阅读全文
posted @ 2025-11-30 00:05 Rick Carter 阅读(110) 评论(0) 推荐(1)
摘要: dotnet10发布了,ef10也快发布了,但是还是只有批量更新(ExecuteUpdateAsync)和批量删除(ExecuteDeleteAsync)功能,没有批量插入。 今天给个办法,在不引用第三方库的情况下,巧妙利用ToQueryString()实现批插。 道理很简单,就是用efcore的T 阅读全文
posted @ 2025-11-15 18:07 Rick Carter 阅读(96) 评论(1) 推荐(2)
摘要: dm库相比其他库本身缺少一些语法差异,也可以说是缺陷。 比如: 0和1无法直接在sql中当作真假值用,where 0这种写法不支持,报错:查询使用值表达式作为过滤条件; t.field is null 也无法直接作为select项; 不支持OUTER APPLY等SQL语法; 以及数据库函数中的又只 阅读全文
posted @ 2025-11-08 21:53 Rick Carter 阅读(66) 评论(0) 推荐(1)
摘要: 1.性能问题-批量多次读写、序列化和反序列化的场景 注意看到dotnet下的IDistributedCache接口内部方法声明都是针对单个key的,当需要多次大量读写同一类型kv值时,存在多次连接redis的情况,导致性能特别慢。 在abp框架中AbpRedisCache有些SetMany和GetM 阅读全文
posted @ 2025-11-01 21:36 Rick Carter 阅读(148) 评论(1) 推荐(1)
摘要: 需求:在多个方法前后输出日志 logger.Info("begin"); method(); logger.Info("end"); 如果需要在方法后输出日志同时加上时长 logger.Info("begin"); var sw= Stopwatch.StartNew(); method(); sw 阅读全文
posted @ 2025-10-28 20:53 Rick Carter 阅读(21) 评论(1) 推荐(2)
摘要: 这个计算是否准备,或者差不多也行,我理解是差不多的 Process.GetCurrentProcess().WorkingSet64 - Gc.GetGCMemoryInfo().HeapSizeBytes 阅读全文
posted @ 2025-10-16 22:58 Rick Carter 阅读(9) 评论(0) 推荐(0)
摘要: 比较水的文章,非常的基础,就当是记录下吧! 1.关于在集合中搜索带来的性能问题,建议用字典(Dictionary) 很多时候需要在一个集合如List中按唯一键查找某个对象,如果用Where扩展方法或者find等方法,是很慢的,特别是大量这样的查找就特别慢。 如果是对集合中的每个数据都要做点什么,那么 阅读全文
posted @ 2025-10-16 22:58 Rick Carter 阅读(190) 评论(2) 推荐(2)
摘要: 这是很早以前遇到的一个问题,觉得说出来有那么一点意义。 有个树形控件,每行前面都有一个复选框,勾选它需要把下级所有的行也都勾上,下级的每行都勾选时还需要给上级也勾选上,存在多级级联。 就上面的功能,勾选框的change事件里需要给下级的勾选框设置相同的checked,导致下级的change事件触发, 阅读全文
posted @ 2025-05-15 21:12 Rick Carter 阅读(66) 评论(0) 推荐(0)
摘要: 1. 问题 环境是dotnet8及以前的版本,dotnet9+不知道是否还有这个问题(我猜是一样的)。 如下代码,在多播委托await异步执行时,不会等待委托方法执行完成,它们在新的线程中运行。 async Task A() { } async Task B() { } Func<Task> fun 阅读全文
posted @ 2025-04-29 21:01 Rick Carter 阅读(295) 评论(2) 推荐(1)
摘要: 本文基于efcore8.0,参考文档。 假设需要重写efcore或者特定数据库的方法的SQL转换,按上面文档及其示例代码,本例中我们大概就是提供下面几个接口的实现。 IMethodCallTranslator IMethodCallTranslatorPlugin IDbContextOptions 阅读全文
posted @ 2025-04-21 22:51 Rick Carter 阅读(221) 评论(0) 推荐(0)
摘要: C#9.0是2020年发布的,record特性还没用上的可以看过来,一起讨论下。 下面通过一个简单的示例演示record带来的好处。 1. 通过一个示例引出问题 public class Person { public string Name { get; set } ... } public cl 阅读全文
posted @ 2025-03-20 22:30 Rick Carter 阅读(275) 评论(0) 推荐(0)
摘要: 如题,当CultureInfo是俄文(ru-RU)时,浮点数中的点是用逗号表达的,如1.1会显示成1,1,造成很多的麻烦,当然如果全系统中全部采纳逗号作为浮点也没问题,只要用户接受就可以,但有时需要继续用点号,那么解决办法如下。 1. 修改DefaultThreadCurrentCulture 我们 阅读全文
posted @ 2025-01-22 17:07 Rick Carter 阅读(152) 评论(1) 推荐(0)
摘要: 如题 hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放,导致产生大量的Timer一直在执行,占用大量cpu和内存。 https://github.com/sergezhigunov/Hangfire.EntityFramew 阅读全文
posted @ 2024-12-26 20:32 Rick Carter 阅读(34) 评论(0) 推荐(0)
摘要: 1. 问题 达梦dotnet efcore的驱动DM.Microsoft.EntityFreameworkCore。 如果实体中存在DateTimeOffset类型字段时,查询报错:invalid cast from DateTime to DateTimeOffset。 Invalid cast 阅读全文
posted @ 2024-12-14 14:52 Rick Carter 阅读(350) 评论(4) 推荐(3)
摘要: 达梦数据库的DOTNET驱动DM.Provider,这个版本8.3.1.30495有bug,会把空字符串改成DBNull处理,反编译代码发现Dm.DmSetValue.SetString方法中判断字符串长度==0就设置成DBNull。 解决办法就是 降低版本到8.3.1.28188。 // Dm.D 阅读全文
posted @ 2024-12-13 11:54 Rick Carter 阅读(131) 评论(0) 推荐(1)