我今天偶然发现了这个东西:
我有一个小辅助方法,内容如下:
private static T GetValOrDefault<T>(this IDataRecord rdr, string name)
{
return rdr[name] is T ? (T) rdr[name] : default(T);
}
我所有的模型都使用public long Id { get; set; }
SQL 服务器列是BIGINT
不知何故GetValOrDefault<long>("Id")
返回'0',我继续在那里使用即时窗口,看看rdr["Id"].GetType()
这是Int32
......任何想法为什么会发生这种情况?我到处看,它说BIGINT = INT64 = long
......不知何故SqlDataReader给了我int32......
编辑:
那是我的 Sql 查询:
SELECT
Id,
Created,
CreatedById,
LastModified,
LastModifiedById,
Deleted,
DeletedById
FROM dbo.MyTable
WHERE Id = @id