使用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
期望.NET
的数据类型与数据库中的完全相同。Term_Sla
需为String
类型
以下是我的经验。我希望这可能会有所帮助,有人:
我有同样的错误,和。net类型匹配Sql数据类型;除了一些数据是空的。因此,请确保您的sql数据不是可空的,否则相应地调整您的。net属性类型
在我的例子中,有一个enum字段,它没有在SQL记录中列出。