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

我看不出为什么任何东西都必须“解析”一个字符串,更不用说在这样做时遇到错误。是什么原因造成的>

4

3 回答 3

15

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

于 2013-06-11T07:35:37.677 回答
1

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

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

于 2018-10-24T19:07:55.733 回答
0

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

于 2021-05-08T15:38:25.517 回答