今日、私はこのことに出くわしました:
私は次の小さなヘルパーメソッドを持っています:
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