я наткнулся на эту вещь сегодня:Странное поведение с SqlDataReader и длинными колоннами
У меня есть небольшой вспомогательный метод со следующим:
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', и я пошел вперед и использовал Immediate W indow, и посмотрел rdr["Id"].GetType()
Это было Int32
... любые идеи, почему это происходит? Везде я смотрю, он говорит BIGINT = INT64 = long
... и как-то SqlDataReader дает мне int32 ...
Edit:
Это мой Sql запрос:
SELECT
Id,
Created,
CreatedById,
LastModified,
LastModifiedById,
Deleted,
DeletedById
FROM dbo.MyTable
WHERE Id = @id
Вы были правы, я использовал временную таблицу с 'DECLARE @temp AS TABLE (Id int' – Nefarion