数据库优先解决方案。无法将NULL值插入'Id'列(数据库优先)
我使用两个表User
和Profile
。他们都使用uniqueidentifier
(SQL Server)作为主键。我让User
的方式自动接收它自己的GUID ID是从:
打开我的EDMX文件。
右键单击用户 - >属性的Guid列 - >将StoreGeneratedPattern更改为标识。
工作就像一个魅力。现在,我试着用Review
做相同的,但我试图创建一个新的行,每次我收到以下错误:
无法将NULL值插入列“ID”,表 “XXXX .dbo.Profile';列不允许有空值。 INSERT失败。 声明已被终止。
如果我不使用Identity
为StoreGeneratedPattern
为Profile
,它不会产生一个唯一的ID,而不仅仅是零从而导致错误的重复,如果我再次尝试创建一个新的行帮。
为什么用户工作正常,但不是Profile
?
我遵循本指南guide这两个表。
您的错误消息引用了一个名为“Profil”的表,而不是“Profile”。是否有可能拼错/命名它引用的表或类? –
对于uniqueidentifier(Guid)列,不能使用DatabaseGeneratedOption.Identity。 DBMS中的Guid列永远不会自动增量,并且由于您已将StoreGeneratedPattern更改为Identity,因此EF不会将其作为值传递,因为它预计它将由DBMS提供。 – DevilSuichiro
为了让它工作,将StoreGeneratedPattern更改为None并设置有效的Guid值或更改数据类型。 – DevilSuichiro