数据库优先解决方案。
我使用了两个名为User
和Profile
的表格。他们都使用uniqueidentifier
(SQL Server)作为主键。我允许User
自动接收它自己的guid id的方式来自:
打开我的edmx文件。
右键单击用户的Guid列 - >属性 - >将StoreGeneratedPattern更改为Identity。
像魅力一样工作。现在我尝试对Review
执行相同操作,但每次尝试创建新行时,我都会收到以下错误:
无法将值NULL插入列' Id',表中 ' xxxx.dbo.Profile&#39 ;;列不允许空值。 INSERT失败。该 声明已被终止。
如果我没有Identity
StoreGeneratedPattern
使用Profile
Profile
,那么它就不会生成一个唯一ID,而只会产生一堆零,如果我尝试,会导致重复错误再次创建一个新行。
为什么用户工作正常而不是var
?
我对这两个表都遵循了本指南guide。
答案 0 :(得分:1)
正如@Gert Arnold在评论中提到的,我忘了在SQL Server中为newsequentialid()
表添加Profile
。一旦我这样做,我终于能够使用DatabaseGeneratedOption.Identity
生成唯一的Guids。
您可以阅读有关此方法的更多信息here。这还包括Code-First的技术。