Dapper如何处理null值 Dapper数据库null映射C# nullable类型

admin 百科 17
Dapper自动将数据库NULL映射为C#可空类型(如int?、DateTime?)或引用类型(如string)的null值;若映射到非可空类型(如int)则抛InvalidOperationException异常。

Dapper如何处理null值 Dapper数据库null映射C# nullable类型-第1张图片-佛山资讯网

Dapper 会自动将数据库中的 NULL 值映射为 C# 中对应的可空类型(如 int?DateTime?string 等),无需额外配置,但需确保实体属性类型与数据库字段语义匹配。

基础映射规则

Dapper 按照 .NET 类型系统进行隐式转换:

  • 数据库 NULL → C# 可空值类型(int?bool?DateTime?)会被设为 null
  • 数据库 NULL → C# 非可空值类型(intDateTime)会抛出 InvalidOperationException(“当转换为类型 'Int32' 时,空值无法转换”)
  • 数据库 NULL → C# 引用类型(stringobject、自定义类)直接映射为 null

实体类设计建议

为避免运行时异常,实体属性应与数据库字段的 nullability 保持一致:

  • 数据库列允许 NULL → C# 属性用可空值类型或引用类型(如 public int? Age { get; set; }
  • 数据库列不允许 NULL → C# 属性可用非可空类型(如 public string Name { get; set; },注意 string 本身可为 null,但业务上可配合校验)
  • 使用 [Column("xxx")] 或约定命名即可,Dapper 不依赖 DataAnnotations 处理 null 映射

手动处理 NULL 的场景

某些情况下需要显式控制 null 行为,例如默认值回退或类型不匹配:

标签: app c# .net 隐式转换

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~