代码之家  ›  专栏  ›  技术社区  ›  MrTelly

我们必须在LinqToSql应用程序中使用guid来唯一地标识对象吗

  •  1
  • MrTelly  · 技术社区  · 14 年前

    我继承了一个LinqToSql应用程序,它正在为对象使用GUID键。

    我们遇到的另一个问题是零碎的索引—我们不能在.Net代码中创建连续的guid。

    由于这是我第一次使用LinqToSql,我想知道其他人是如何解决这个问题的。

    顺便说一句,不需要将多个服务器之间的数据进行组合-这是我过去使用GUID键的主要(唯一)原因。

    1 回复  |  直到 14 年前
        1
  •  0
  •   jwsample    14 年前

    不,你不必使用guid,你可以使用任何你喜欢的键类型。

    如果您一直使用guid,请考虑让数据库通过为pk字段创建默认绑定来为您依次生成guid newsequentialid() . 这至少可以消除聚集索引中的碎片。如果这样做,您需要对.dbml进行一些修改。关于.dbml中的键字段 Auto Generated Value = true Auto-Sync = OnInsert

    至于在插入数据库之前生成值,我看不出使用标识字段有什么帮助。您仍然需要插入数据库才能可靠地获得正确的值(标识列将具有与上述相同的自动生成/自动同步设置)

    在Ints或Guids中,您应该能够将insert包装到事务中,插入记录,获取新的键值,运行业务逻辑,如果失败,则回滚新插入的记录。