随笔分类 -  .NET

摘要:如题,当CultureInfo是俄文(ru-RU)时,浮点数中的点是用逗号表达的,如1.1会显示成1,1,造成很多的麻烦,当然如果全系统中全部采纳逗号作为浮点也没问题,只要用户接受就可以,但有时需要继续用点号,那么解决办法如下。 1. 修改DefaultThreadCurrentCulture 我们 阅读全文
posted @ 2025-01-22 17:07 Rick Carter 阅读(45) 评论(1) 推荐(0) 编辑
摘要:如题 hangfire.entityframeworkcore这个库因为System.Threading.Timer未停止也未释放,导致产生大量的Timer一直在执行,占用大量cpu和内存。 https://github.com/sergezhigunov/Hangfire.EntityFramew 阅读全文
posted @ 2024-12-26 20:32 Rick Carter 阅读(7) 评论(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 阅读(73) 评论(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 阅读(30) 评论(0) 推荐(1) 编辑
摘要:工作中经常遇到性能问题,包括cpu和内存占用高等问题,还有经常想监控当前程序运行情况,如代码运行频次、耗时、占用cpu和内存情况等。基本都是要从dump等诊断工具或者日志去分析,操作麻烦。 今年初就思考是否可以做这样的一个更加方便的工具,可以线上实时分析诊断dotnet程序,并给出结果或者建议,也可 阅读全文
posted @ 2024-11-28 16:02 Rick Carter 阅读(199) 评论(3) 推荐(2) 编辑
摘要:问题 Abp vNext框架,后台服务使用IStringLocalizer获得翻译时,与设置的“Abp.Localization.DefaultLanguage”不一致,一直是按服务器的本地语言来的。 分析 Abp中重写了IStringLocalizer,Abp源码简化如下。 public clas 阅读全文
posted @ 2024-11-27 21:55 Rick Carter 阅读(37) 评论(0) 推荐(0) 编辑
摘要:dynamic-linq.net,这个库大家都用过,简单说就是使用字符串编写查询表达式的,非常强大,因为字符串是可以运行时拼接的,所以就可以在运行时动态的构造查询,非常适合框架开发和需要灵活性的场景。 我用它解决了在原生代码非常困难且耗时(需要动态构造表达式)的功能,真正的直达痛点。 它dotnet 阅读全文
posted @ 2024-11-22 21:56 Rick Carter 阅读(278) 评论(0) 推荐(0) 编辑
摘要:最近又遇到个奇怪的问题,查询出来的时间比数据库中字段存的时间多8小时。 发现是用了efcore的二级缓存,本来用json序列化的,后来为了性能改成MessagePack,最后定位就是MessagePack序列化/反序列化时不保留 DateTime.Kind,导致从redis里拿到的数据中时间值+8小 阅读全文
posted @ 2024-11-22 16:17 Rick Carter 阅读(44) 评论(0) 推荐(0) 编辑
摘要:这里简单介绍下几种修改实体或者导航的跟踪状态。 1. 直接修改实体 对已在DbContext中跟踪的实体,直接操作,如给字段赋值、给导航属性赋值或者添加删除等 对未在DbContext中跟踪的实体,调用DbContext的Add、Update、Remove等方法,对已跟踪的实体也有效 需要注意所有添 阅读全文
posted @ 2024-11-20 15:52 Rick Carter 阅读(97) 评论(0) 推荐(0) 编辑
摘要:dotnet程序中使用NPOI,升级到2.7后,XSSFWorkbook.Write多了一个可选参数leaveOpen=false,默认是false,这个方法执行完成后,流会关闭,导致后续代码报错。 特别是从旧的版本升级上来的,就很被忽略这个问题,因为生成不报错,运行才报错,因此这个leaveOpe 阅读全文
posted @ 2024-11-16 11:07 Rick Carter 阅读(89) 评论(0) 推荐(0) 编辑
摘要:很长时间以来我都在公司dotnet开发的软件上做各种性能优化,包括各种崩溃、线程池资源不足、死锁、以及很多性能慢的代码问题等,类似这种cpu相关问题都比较好查出来。 这个过程中经常遇到内存占用过高的问题,也是各种办法都试用了一遍,包括DOTNET GC相关的各种配置,还给docker加内存限制,但是 阅读全文
posted @ 2024-11-08 16:53 Rick Carter 阅读(99) 评论(0) 推荐(0) 编辑
摘要:环境:EFCore8和Oracle.EntityFrameworkCore8.23.60,都是当前最新版本,报错:ora-00904 FALSE 标识符无效。 原因: 语句在不同oracle版本上的兼容问题,oracle23版本开始支持Boolean标识符表示真假值:False和True。而这之前的 阅读全文
posted @ 2024-10-23 17:02 Rick Carter 阅读(82) 评论(0) 推荐(0) 编辑
摘要:头一次遇到个奇怪的错误,记录下。 环境:dotnet7 异常:System.InvalidProgramException:“Common Language Runtime detected an invalid program.” 报错代码示例: Func<Task> Func { get; se 阅读全文
posted @ 2024-08-30 19:31 Rick Carter 阅读(71) 评论(0) 推荐(0) 编辑
摘要:EF6 CodeFisrt支持Oracle EF说是支持多数据库,但真做起来太多坑了,编程这个词以后要换换,叫填坑好了。这次把我在做EF6 CodeFisrt支持Oracle数据库过程中遇到的坑写下来,给需要的人减少点填坑的痛苦。 先说下使用环境 EF6.1.3 CodeFirst Oracle版本 阅读全文
posted @ 2017-06-22 21:09 Rick Carter 阅读(3542) 评论(2) 推荐(4) 编辑
摘要:C#读取U盘序列号 阅读全文
posted @ 2010-05-31 17:51 Rick Carter 阅读(6562) 评论(0) 推荐(2) 编辑
摘要:昨天需要用命令行来创建网站虚拟目录,看了这篇文章才创建成功的,转过来为将来参考方便。 阅读全文
posted @ 2008-02-26 09:42 Rick Carter 阅读(707) 评论(2) 推荐(0) 编辑
摘要:下面两个方法是DataRow复制一行到另一个DataTable的,直接Add会出错“此行已属于另一个表”,其实以前就知道怎么做的,可每次要用到的时候还是犯糊涂,这次把它们记下来。 1.用DataRow.ItemArray DataTable t=new DataTable(); DataRow r=t.NewRow(); r.ItemArray=oldRow.ItemArray; t.Rows.A... 阅读全文
posted @ 2007-11-22 19:19 Rick Carter 阅读(20315) 评论(1) 推荐(4) 编辑
摘要:我曾作过这个,想记录下来,不知道是不是很好的实现方式(本来想写最好的实现方式的,但想到这些绝对的词少用为妙); 这个包含是指两个ds的表只有一个,且他们的列都相同,都有一个唯一的列ID,但是它们的数据集不同,我想知道其中的一个ds的表的每个ID都在另一个ds表中出现了。 阅读全文
posted @ 2007-09-24 22:21 Rick Carter 阅读(739) 评论(0) 推荐(0) 编辑
摘要:如果需要批量插入记录,可以使用SqlDataAdapter。示例:stringsql="Selectitem1,item2,item3fromtableA";SqlConnectioncn=newSqlConnection("server=(local);uid=sa;pwd=;database=examonline");SqlDataAdapterda=newSqlDataAdapter(sql,cn);DataSetds=newDataSet();try{cn.Open();da.Fill(ds,"dsTable1");}fina 阅读全文
posted @ 2007-09-11 21:29 Rick Carter 阅读(3654) 评论(3) 推荐(0) 编辑

点击右上角即可分享
微信分享提示