我们使用Guids作为数据库中实体的主键.传统上,我们遵循一种让数据库在INSERT期间设置实体的ID的模式,我认为主要是因为这通常是使用自动增量字段或其他方式来处理事物的方式.
我越来越多地发现,在对象构造期间,在代码中进行密钥分配是很有帮助的,主要有两个原因:
>你知道,一旦一个对象的构造函数运行,它的所有字段都被初始化了.你没有“半烤”的对象踢.
>如果您需要执行一批操作,其中一些操作取决于知道对象的密钥,您可以一次完成所有操作,而无需往返数据库.
有没有什么令人信服的理由不这样做?也就是说,当使用Guid作为键时,是否有很好的理由将密钥分配留给数据库?
编辑:
很多人对于是否应该用PK来(我知道的)是否有强烈的意见,但这并不是我问题的重点.
除了集群问题(如果您正确设置索引似乎不是问题),我还没有看到一个引人注目的理由,以避免在应用程序层中创建密钥.