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

12

我有下面这个简化了的表格:

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 - 字符串)

我无法理解为什么会有必要“解析”一个字符串,更不用说在这个过程中出现错误了。可能是什么原因导致的呢?


你的POCO属性类型是否与数据存储的列匹配? - Alex
3个回答

15

Dapper 期望 .NET 数据类型与数据库中完全一致。 Term_Sla 必须是 String 类型。


1

这是我的经验,希望能对某些人有所帮助:

我遇到了同样的错误,.net类型与Sql数据类型匹配,只是一些数据为null。 因此,请确保您的Sql数据不可为空,否则请相应地调整您的.net属性类型。


0
在我的情况下,有一个枚举字段没有出现在 SQL 记录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接