kitlau
kitlau

kitlau's blog

C#


如何在 CSharp 和 EF Core 中使用 UTC 时间

本文介绍了一位开发者为解决外贸网站时区问题而采用UTC时间处理的方法。通过定义Product实体类并将时间字段存储为UTC,在EF Core中配置模型确保数据库存储UTC时间,并使用Mapster将UTC时间转换为美国当地时间展示给用户,避免了因时区差异导致的时间显示错误。文章详细讲解了UTC时间的概念、C#中的操作方法、EF Core的配置扩展以及Mapster工具的应用,最终实现了前台网站正确显示当地时的功能,确保产品信息准确无误。--DeepSeek

.NET C# EF Core utc time mapster time zones

C# 3 年前的 record 你现在用上了吗?

这篇文章探讨了C#中的`record`类型及其在提高代码质量和安全性方面的重要性。文章指出,`record`类型的不可变性和值语义使其成为表示数据的理想选择,并能够减少多线程环境下的竞争条件和错误修改的风险。此外,通过使用`IReadOnlyCollection<T>`等只读集合类型,可以进一步确保数据的稳定性,从而提高代码的安全性、可预测性和可维护性。然而,文章也反思了当前软件开发中对代码质量的忽视现象,特别是在追求快速迭代和交付的过程中,一些开发者更倾向于采用快速但不稳定的解决方案,导致代码质量和维护成本的问题。作者呼吁重视代码质量,并利用像`record`这样的特性来提升软件的整体质量。--DeepSeek

.NET C# Record Immutability Value Semantics Data Modeling

为什么我的接口,慢得跟蜗牛一样啊?- 1. 使用 Serilog 结构化日志

本文介绍了如何在 ASP.NET Web API 项目中使用 Serilog 进行结构化日志记录,详细描述了配置过程和输出结果,并展示了 JSON 格式的结构化日志内容,包括时间戳、消息、上下文信息等元数据。文章还提到可以根据团队需求选择不同的存储方式,如 MongoDB 或关系型数据库,并介绍了 Seq 等流行的服务器工具用于收集和分析日志数据,最后提供了源代码链接以便参考。--DeepSeek

.NET Performance C# Serilog Web API ASP.NET Core

谁是你的菜?IEnumerable、IQueryable 和 ICollection 选择指南

在编程中选择合适的集合类型至关重要,需综合考虑功能需求和代码维护性。文章指出,ICollection<T>适用于需要增删元素的场景,而IQueryable<T>在处理ORM时能提升效率。返回集合类型应选择不可变的IReadOnlyCollection<T>或其子类(如IReadOnlyList<T>),以避免调用方随意修改数据源并提高代码可维护性。此外,需注意IEnumerable<T>的延迟评估特性可能引发问题,尤其是在数据库上下文已释放时进行枚举会导致错误。文章通过示例展示了不同集合类型的功能和潜在风险,并强调在选择集合类型时应兼顾功能需求和代码稳定性与维护性。--DeepSeek

.NET C# Code Quality IEnumerator IQueryable Lazy Evaluation