我已经阅读过关于SQL-CLR类型映射但是没有得到它......两者都在控制台中显示Int16但是当我尝试时
f.smallId = dr[0];
即使是简单的测试
Int16 test=dr[0];
不起作用: 它现在说dr [0]是一个对象
NpgsqlCommand command = new NpgsqlCommand("select id from database", conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr[0].GetType());
foreach (Definitions f in files)
{
Console.WriteLine(f.smallId.GetType());
f.smallId = dr[0];
}
}
答案 0 :(得分:1)
是的,因为DbDataReader.Item
property 返回object
并且object
与Int16
之间没有隐式对话,但 是明确的对话。
只需使用;
Int16 test = (Int16)dr[0];
还可以使用using
语句自动处理命令和适配器。