Skip to content

Parameter新增DbType属性,直接指定数据库字段类型,无需配置TypeHandler #239

@xiangxiren

Description

@xiangxiren

SqlServer数据库,字段类型设置为datetime2,当传入参数值(参数名假设为 LastLockTime)为DateTime.Min时,会报“SqlDateTime溢出。 必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。”。这是因为在构建参数时,将参数LastLockTime对应的数据库字段类型设置成了datetime。

当前解决方案是在TypeHandlers新增以下配置

<TypeHandler Name="DateTime2" Type="SmartSql.TypeHandlers.StringTypeHandler,SmartSql">
  <Properties>
    <Property Name="DbType" Value="DateTime2"/>
  </Properties>
</TypeHandler>

然后在ParameterMap中设置TypeHandler

<ParameterMap Id="InitializeTablesParamMap">
  <Parameter Property="lastLockTime" TypeHandler="Datetime2"/>
</ParameterMap>

可以在Parameter中新增DbType属性,直接配置数据库类型,无需再设置TypeHandler,例如:

<ParameterMap Id="InitializeTablesParamMap">
  <Parameter Property="lastLockTime" DbType="Datetime2"/>
</ParameterMap>

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions