Sql server 2008 r2 在EF4中无标识列自动生成私钥

Sql server 2008 r2 在EF4中无标识列自动生成私钥,sql-server-2008-r2,entity-framework-4,Sql Server 2008 R2,Entity Framework 4,是否有任何方法可以在不使用标识属性的情况下自动生成主键(int数据类型)?我使用的是SQL Server 2008 R2 SP2 Express Edition和Entity Framework 4(集成在Visual Studio 2010中)。实现这一点的最佳、最简单和最可靠的方法是使用标识列,因为数据库为您处理所有事情,并且保证并发安全。最好的方法是,实现这一点最简单、最可靠的方法是使用IDENTITY列,因为数据库为您处理所有事情,并且保证并发安全。你为什么要把这个完美的选项排除在外呢?

是否有任何方法可以在不使用标识属性的情况下自动生成主键(int数据类型)?我使用的是SQL Server 2008 R2 SP2 Express Edition和Entity Framework 4(集成在Visual Studio 2010中)。

实现这一点的最佳、最简单和最可靠的方法是使用标识列,因为数据库为您处理所有事情,并且保证并发安全。

最好的方法是,实现这一点最简单、最可靠的方法是使用
IDENTITY
列,因为数据库为您处理所有事情,并且保证并发安全。你为什么要把这个完美的选项排除在外呢?因为我在用IDENTITY列做实验,我对结果不满意。我设置了tinyint标识列并添加了255行,之后,即使在我从表中删除了所有行之后,仍然会持续引发溢出异常。这意味着数据库引擎不检查哪些值可以自由使用,而只检查上次使用的值。想象一下,添加、删除和再次添加了1000000行-现在有2000000个无法使用的数字。我找到的最佳解决方案是将int索引更改为GUID索引,并在客户端或服务器上使用computed column生成唯一的索引(我还不知道如何)。是的,
IDENTITY
就是这样工作的-一旦给出一个值,它就永远不会被回收!只需使用一个更合适的数据类型,比如
INT
,它可能会为您提供40亿个可能的值……我不确定大约40亿,INT是-2147483648到2147483647,并且我确定数据库引擎不会分配负数。但也许我错了。你可以很容易地得到一个
IDENTITY
列,它从-20亿开始到+20亿-->给你40亿个值!