我的问题专门讨论SQL Server 2008和.NET 3.5实体框架之间数值类型的映射。
我在一家公司工作,该公司在设计数据库时有相当严格的规则。所述规则由DBA强制执行,该DBA对于规模不大于它们所需的表格是神经质的。例如,他坚持认为我们会在适当的时候将数字列保留为tinyint和smallint。
EF映射数字类型(左侧为SQL Server类型,右侧为.NET类型):
tinyint - >的字节
smallint - >的的Int16
int - > 内部
bigint - >的的Int64
由于我最近做了一些阅读并发现.NET运行时已经过优化以与Int32一起使用,因此我担心了。如果有人想对它进行读取,那么Stackoverflow上的This问题确实会深入其中。
我的问题是:因为EF将smallint映射到Int16,我是否应该克服优化问题并在代码中使用Int16成员变量,或者是否有其他解决方案可以让我使用Int32类型代码并且仍然可以在SQL Server中使用smallint类型吗?我可以自己考虑一两个解决方案,但它们在“优化”的名义下似乎都有点过分。
答案 0 :(得分:1)
如果这是LINQ to SQL而不是LINQ to Entities,你可以更改映射的类型,唯一的问题是如果你最终得到的值大于smallint
列可以处理的值(但是,无论如何,我认为这是一个完整的问题。)
但LINQ to Entities验证器不允许“不匹配”。