我正在开发一个具有一些潜在大型数据表的asp.net应用程序。我想知道定义主键的最佳方法是什么。我知道之前有人问过,但由于这是针对特定情况的,我认为这个问题是有效的。
我在SQL Server 2008数据库上使用Entity Framework 4。
定义主键有哪些可能性,请考虑以下因素:
到目前为止,我自己想出的是一个自定义算法,它生成一个日期时间部分和一个随机部分,转换为十六进制字符串表示。这让我的字符串略短于guid。我仍然可以将它转换为base64,但这将违反项目nr.6。
感谢您的建议。
答案 0 :(得分:12)
您可以考虑将密钥存储为BIGINT(8字节整数)。
BIGINT的工作方式与INT完全相同,可以相同的方式在自动递增标识列中使用。
答案 1 :(得分:2)
以下是一些想法。
遗憾的是,您无法创建二进制数据标识列。但是,您可以使用max(Id)+1
插入策略。我对.NET的实体框架并不熟悉,但应该有一种方法可以在同一行程中检索密钥。我在过去看过文档,解释了如何将实体映射到存储过程并从中检索密钥,但我没有任何细节。
答案 2 :(得分:0)
我会在你的情况下使用顺序GUID。