kitlau
kitlau

kitlau's blog

EF Core


EF Core 何时、为何使用 IsUnicode 方法

这篇博客主要讨论了EF Core中`IsUnicode()`方法的使用时机和原因。首先,作者通过实验发现,`IsUnicode()`对MariaDB没有什么用,对MSSQL Server则会改变C# string类型的属性在数据库中的数据类型。当不使用`IsUnicode()`或配置为`IsUnicode(true)`时,生成的数据库表中对应string字段的数据类型为`nvarchar`,而配置`IsUnicode(false)`时则为`varchar`。因此,作者建议,当我们确定一个string类型的属性是ASCII安全的时候,即这个属性的值只会包含数字、英文字母和英文符号时,可以为它配置`IsUnicode(false)`,这样它在数据库中就是`varchar`类型。但如果你不确定,最好还是保持默认。此外,作者还分享了他的一些经验,例如对于ASCII安全的字符串来说,`nvarchar`要比`varchar`多占1倍的存储空间,而且还要考虑性能的影响。在博客的最后,作者介绍了EF Core 6中引入的新特性:Unicode Attribute,并总结了软件开发中需要注意的一些问题。--GPT 4

C# EF Core

EF Core 动态构建表达式树简化 DDD 值对象的比较

本篇博客探讨了如何使用EF Core动态构建表达式树简化DDD值对象的比较。首先,文章讲述了如何在EF Core中使用值对象,以及遇到的问题。接着,文章提出了使用动态构建表达式树的查询作为解决方案,并详细解释了如何实现这个解决方案,包括创建一个名为`ValueObjectEqualHelper`的静态类,以及如何使用这个类中的`CheckEqual<T, TProperty>`静态方法。最后,博客展示了如何使用这个方法,并展示了生成的SQL脚本和输出结果。这个方法是否能够解决你在EF Core中使用值对象时遇到的问题呢?对于动态构建表达式树,你有什么其他的想法和建议吗?--GPT 4

.NET EF Core

EF Core 动态构建表达式树为所有实体设置软删除的查询过滤器

这篇博客文章介绍了如何在EF Core中动态构建表达式树,实现对所有实体设置软删除的查询过滤器。首先,文章通过一个简单的实体类和一个实体配置类来演示如何在EF Core中设置查询过滤器。然后,文章提出了一个问题:如果项目中有大量的实体,每个实体都进行一次查询过滤器的配置将会非常麻烦。为了解决这个问题,文章引入了动态构建表达式树的方法。通过动态构建表达式树,我们可以在应用程序启动时,遍历所有的实体类型,对有软删除标志的实体动态设置查询过滤器。文章还演示了如何在查询时忽略查询过滤器,以及如何简化动态构建表达式树的代码。最后,文章预告了下一篇博客的主题,将会介绍如何使用动态构建表达式树来简化和语义化领域驱动设计中值对象的比较。这篇博客对于那些在EF Core中使用查询过滤器,或者需要动态构建表达式树的开发人员来说,将会有很大的帮助。那么,你是否已经想象出如何在你的项目中应用这些方法了呢?--GPT 4

.NET EF Core

  • 1