摘要: 1. 问题 达梦dotnet efcore的驱动DM.Microsoft.EntityFreameworkCore。 如果实体中存在DateTimeOffset类型字段时,查询报错:invalid cast from DateTime to DateTimeOffset。 Invalid cast 阅读全文
posted @ 2024-12-14 14:52 Rick Carter 阅读(35) 评论(2) 推荐(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 阅读(7) 评论(0) 推荐(1) 编辑
摘要: 工作中经常遇到性能问题,包括cpu和内存占用高等问题,还有经常想监控当前程序运行情况,如代码运行频次、耗时、占用cpu和内存情况等。基本都是要从dump等诊断工具或者日志去分析,操作麻烦。 今年初就思考是否可以做这样的一个更加方便的工具,可以线上实时分析诊断dotnet程序,并给出结果或者建议,也可 阅读全文
posted @ 2024-11-28 16:02 Rick Carter 阅读(169) 评论(3) 推荐(2) 编辑
摘要: 问题 Abp vNext框架,后台服务使用IStringLocalizer获得翻译时,与设置的“Abp.Localization.DefaultLanguage”不一致,一直是按服务器的本地语言来的。 分析 Abp中重写了IStringLocalizer,Abp源码简化如下。 public clas 阅读全文
posted @ 2024-11-27 21:55 Rick Carter 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 上个文章介绍了动态LINQ库。 然后动态造了一个查询,示例如下: //ctx是EF的DbContext,字段Value是字符串类型 await ctx.Tables.Where("As(Value,\"DateTime?\")>@0",datetime).ToListAsync(); 上面的查询条件 阅读全文
posted @ 2024-11-27 21:54 Rick Carter 阅读(94) 评论(0) 推荐(0) 编辑
摘要: dynamic-linq.net,这个库大家都用过,简单说就是使用字符串编写查询表达式的,非常强大,因为字符串是可以运行时拼接的,所以就可以在运行时动态的构造查询,非常适合框架开发和需要灵活性的场景。 我用它解决了在原生代码非常困难且耗时(需要动态构造表达式)的功能,真正的直达痛点。 它dotnet 阅读全文
posted @ 2024-11-22 21:56 Rick Carter 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 最近又遇到个奇怪的问题,查询出来的时间比数据库中字段存的时间多8小时。 发现是用了efcore的二级缓存,本来用json序列化的,后来为了性能改成MessagePack,最后定位就是MessagePack序列化/反序列化时不保留 DateTime.Kind,导致从redis里拿到的数据中时间值+8小 阅读全文
posted @ 2024-11-22 16:17 Rick Carter 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 这里简单介绍下几种修改实体或者导航的跟踪状态。 1. 直接修改实体 对已在DbContext中跟踪的实体,直接操作,如给字段赋值、给导航属性赋值或者添加删除等 对未在DbContext中跟踪的实体,调用DbContext的Add、Update、Remove等方法,对已跟踪的实体也有效 需要注意所有添 阅读全文
posted @ 2024-11-20 15:52 Rick Carter 阅读(79) 评论(0) 推荐(0) 编辑
摘要: dotnet程序中使用NPOI,升级到2.7后,XSSFWorkbook.Write多了一个可选参数leaveOpen=false,默认是false,这个方法执行完成后,流会关闭,导致后续代码报错。 特别是从旧的版本升级上来的,就很被忽略这个问题,因为生成不报错,运行才报错,因此这个leaveOpe 阅读全文
posted @ 2024-11-16 11:07 Rick Carter 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 很长时间以来我都在公司dotnet开发的软件上做各种性能优化,包括各种崩溃、线程池资源不足、死锁、以及很多性能慢的代码问题等,类似这种cpu相关问题都比较好查出来。 这个过程中经常遇到内存占用过高的问题,也是各种办法都试用了一遍,包括DOTNET GC相关的各种配置,还给docker加内存限制,但是 阅读全文
posted @ 2024-11-08 16:53 Rick Carter 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 环境:EFCore8和Oracle.EntityFrameworkCore8.23.60,都是当前最新版本,报错:ora-00904 FALSE 标识符无效。 原因: 语句在不同oracle版本上的兼容问题,oracle23版本开始支持Boolean标识符表示真假值:False和True。而这之前的 阅读全文
posted @ 2024-10-23 17:02 Rick Carter 阅读(46) 评论(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 阅读(20) 评论(0) 推荐(0) 编辑
摘要: NuGet.Config <?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <!-- 默认不将 packages 提交到源代码管理 --> <add key="disableSourceControlIntegrati 阅读全文
posted @ 2021-08-14 16:36 Rick Carter 阅读(594) 评论(0) 推荐(1) 编辑
摘要: EF6 CodeFisrt支持Oracle EF说是支持多数据库,但真做起来太多坑了,编程这个词以后要换换,叫填坑好了。这次把我在做EF6 CodeFisrt支持Oracle数据库过程中遇到的坑写下来,给需要的人减少点填坑的痛苦。 先说下使用环境 EF6.1.3 CodeFirst Oracle版本 阅读全文
posted @ 2017-06-22 21:09 Rick Carter 阅读(3537) 评论(2) 推荐(4) 编辑
摘要: 一直在思考分布式系统设计的问题,业务对象原封不动的情况下部署在客户端和服务器端,可以根据配置文件选择是连接服务器还是连接本地的数据库,这个问题让我绞尽脑汁,我总是设想的客户端与服务器端通信的方式是最低端的Socket。花了两个晚上研究CSLA.NET框架关于数据门户这块代码,才发现问题的关键所在:客户端与服务器端通信不能采用最低端的Socket,而要用高端的WebService、.NET Remoting或者是自己定义一种协议等,只要它们支持客户端直接根据服务器端的服务URL、类名、方法名和方法参数四个信息就可以调用服务器对应的类和方法就行。说明:本文中所表达的思想与CSLA.NET有很大区. 阅读全文
posted @ 2011-06-06 05:25 Rick Carter 阅读(65860) 评论(22) 推荐(7) 编辑