使用Dapper将char(8)映射为字符串属性

本文关键字:映射 字符串 属性 Dapper char 使用 | 更新日期: 2023-09-27 18:18:01

我有以下表格,并进行了删节:

CREATE TABLE [dbo].[TERMINAL] (
    [TERM_CODEID]    SMALLINT     NOT NULL,
    [TERM_ACTIVE]    SMALLINT     NOT NULL,
    [TERM_NAME]      VARCHAR (30) NOT NULL,
    [TERM_SLA]       CHAR (8)     NOT NULL,
    [TERM_SERIAL]    VARCHAR (8)  NULL,
    [TERM_VERSION]   VARCHAR (8)  NULL,
    [TERM_STATUS]    INT          NULL,
)

当我尝试下面的Dapper代码时——我是一个完全的Dapper新手,昨天发现了它——我得到了一个错误:

using (var conn = new SqlConnection("data source=ourServer; initial catalog=ourDb;user id=sa;password=ourPassword;"))
{
    conn.Open();
    var terms = conn.Query<Terminal>("select * from TERMINAL");
}

错误是:

解析第3列错误(TERM_SLA=01010B01 - String)

我看不出为什么任何东西都必须"解析"一个字符串,更不用说在这样做时遇到错误了。

使用Dapper将char(8)映射为字符串属性

Dapper期望.NET的数据类型与数据库中的完全相同。Term_Sla需为String类型

以下是我的经验。我希望这可能会有所帮助,有人:

我有同样的错误,和。net类型匹配Sql数据类型;除了一些数据是空的。因此,请确保您的sql数据不是可空的,否则相应地调整您的。net属性类型

在我的例子中,有一个enum字段,它没有在SQL记录中列出。