【问题标题】:ASP.NET MVC Model id type --- best practicesASP.NET MVC 模型 id 类型 --- 最佳实践
【发布时间】:2012-07-25 16:09:24
【问题描述】:

简单的问题。我有几个不同的模型存储在 SQL 数据库中。带有字节数据的图像记录表,大型多字段用户数据表等。所有这些模型都需要主键。大多数初学者教程都显示了 int 用于 id 的用法。这是标准和专业的。我觉得开始使用 int 很奇怪,因为它的长度是可变的并且以 1 开头:S

对于这个业余问题,我很抱歉,但我无法通过 google 找到有关该主题的任何足够材料。

【问题讨论】:

  • 是什么让你说 int 是“可变长度并从 1 开始”?链接到某种相关的问题:stackoverflow.com/questions/255569/…
  • SQL Server 的INT IDENTITY 列默认为1 种子和1 增量。但是你可以通过声明你的专栏Id INT IDENTITY(seed, inc)change the definition
  • kivin,谢谢 我记得之前播过 SQL 但不知道如何从模型中做到这一点。我所说的可变长度是指位数。我喜欢看到 Id 之类的 0001、0234 等,或者像猜测一样的 guid。

标签: asp.net-mvc model


【解决方案1】:

INT 或任何其他integral data type 用作主键或标识列并没有隐含的不专业。这仅取决于您的业务需求。为了保持编程as simple as possible 的利益,INT 数据类型是许多业务需求的不错选择:

  • 它能够表示大约 21 亿条唯一记录。
  • 它在现代硬件中占用最少的硬盘空间。
  • SELECTs 和 UPDATEs 很快。
  • 如果记录的数量有可能超过限制,重构到更大的积分是相当容易的。 BIGINT 可以处理比您可以放入数据库中的更多记录。说真的。

您可能想要使用完整主键的一个原因:

  • 您可以使用Guid(或SQL Server 术语中的UNIQUEIDENTIFIER)来实现全局唯一性。换句话说,如果您将数据迁移到另一个位置,主键应该仍然是唯一的。

【讨论】:

    【解决方案2】:

    是的,int 是行业标准。

    即使在数据库之外,我也很少看到带有 uint 或任何其他表示整数的变体的 C# 代码。偶尔byte 用于数组。 long 用于int 可能不足以覆盖所有可能性。

    始终使用int 的一个优点是您可以传递id 变量,而不必担心在不同整数类型之间进行转换。

    【讨论】:

      【解决方案3】:

      这是 100% 好的,并且被广泛使用。有些人使用longs 作为主键,因为它们的最大值更大。不过,在大多数情况下不是必需的。

      【讨论】:

        【解决方案4】:

        Guid 类型有时也用作 ID。它有一些好处,比如固定长度、全局唯一性和不可预测性。还有一些问题,例如搜索性能较低且难以记住。

        【讨论】:

          猜你喜欢
          • 2011-09-16
          • 2011-04-08
          • 1970-01-01
          • 2016-02-27
          • 1970-01-01
          • 1970-01-01
          • 2018-02-25
          • 2010-11-28
          • 1970-01-01
          相关资源
          最近更新 更多