我的SQL Server 2008中有一个数据类型为Bigint
的列。
当我比较两个数字时,例如1002055555& 100334它假定100334大于1002055555。
任何人都可以建议为什么会发生这种情况以及我应该使用哪种数据类型强制进行任何比较以显示1002055555是否大于100334?
由于
修改
这是代码,我有一个Bigint
类型的PartialTag列,当我在Entity Framewowk中进行比较时,例如:
var racks = repository.AllFindRacks(withOutSpace).OrderBy(a => a.Technology.PartialTag).ToPagedList(page, pagesize);
它将在100334之前返回100205555 ..
请记住,EF会将SQL Server 2008中的Null-able Bigint
翻译为我的实体类中的Nullable<long>
。
答案 0 :(得分:1)
您的存储库方法AllFindRacks
是否正在调用存储过程?如果是这样,请确认没有转换为字符串类型。您所看到的结果最简单的解释是,您BigInt
在某些时候会转换为varchar
或nvarchar
。 (或者,AllFindRacks
.ToString()
代码中的某处正在发生。)
您可以尝试添加类似的内容,以确保在访问代码时确实使用long
:
System.Diagnostics.Debug.WriteLine(racks.First().Technology.PartialTag.GetType().FullName);