【发布时间】:2023-03-09 00:05:01
【问题描述】:
我的问题专门涉及 SQL Server 2008 和 .NET 3.5 实体框架之间的数字类型映射。
我为一家在设计数据库方面有相当严格规则的公司工作。所述规则由 DBA 强制执行,他对表的大小没有超出所需的大小感到神经质。例如,他坚持认为,在适当的情况下,我们将数字列保留为 tinyint 和 smallint。
EF 映射这样的数字类型(左侧为 SQL Server 类型,右侧为 .NET 类型):
tinyint -> 字节
smallint -> Int16
int -> int
bigint -> Int64
我之所以担心,是因为我最近做了一些阅读,发现 .NET 运行时已针对 Int32 进行了优化。 This Stackoverflow 上的问题真的很深入人心,如果有人想对其进行阅读的话。
我的问题是:既然 EF 将 smallint 映射到 Int16,我应该克服优化问题并在代码中使用 Int16 成员变量,还是有其他解决方案可以让我使用Int32 类型在代码中仍然可以在 SQL Server 中使用 smallint 类型?我可以自己想到一两个解决方案,但它们似乎都以“优化”的名义过度。
【问题讨论】:
-
我不确定这一点,但我想您可以将模型中的属性类型更改为 in32,只要您不发送大于 int16 最大值的值,一切都应该没问题.
-
@ryudice - 不幸的是,这不起作用......或者至少不适用于 LINQ to Entities(它可能适用于 LINQ to SQL??)。我试过了,它对我很生气。
标签: entity-framework sql-server-2008 .net-3.5 types