2016-09-26 97 views
0

數據庫優先解決方案。無法將NULL值插入'Id'列(數據庫優先)

我使用兩個表UserProfile。他們都使用uniqueidentifier(SQL Server)作爲主鍵。我讓User的方式自動接收它自己的GUID ID是從:

  1. 打開我的EDMX文件。

  2. 右鍵單擊用戶 - >屬性的Guid列 - >將StoreGeneratedPattern更改爲標識。

工作就像一個魅力。現在,我試着用Review做相同的,但我試圖創建一個新的行,每次我收到以下錯誤:

無法將NULL值插入列「ID」,表 「XXXX .dbo.Profile';列不允許有空值。 INSERT失敗。 聲明已被終止。

如果我不使用IdentityStoreGeneratedPatternProfile,它不會產生一個唯一的ID,而不僅僅是零從而導致錯誤的重複,如果我再次嘗試創建一個新的行幫。

爲什麼用戶工作正常,但不是Profile

我遵循本指南guide這兩個表。

+0

您的錯誤消息引用了一個名爲「Profil」的表,而不是「Profile」。是否有可能拼錯/命名它引用的表或類? –

+1

對於uniqueidentifier(Guid)列,不能使用DatabaseGeneratedOption.Identity。 DBMS中的Guid列永遠不會自動增量,並且由於您已將StoreGeneratedPattern更改爲Identity,因此EF不會將其作爲值傳遞,因爲它預計它將由DBMS提供。 – DevilSuichiro

+0

爲了讓它工作,將StoreGeneratedPattern更改爲None並設置有效的Guid值或更改數據類型。 – DevilSuichiro

回答

1

As @Gert Arnold在評論中提到,我忘記在SQL Server中爲Profile表添加newsequentialid()。一旦我這樣做,我終於能夠生成與DatabaseGeneratedOption.Identity獨特的Guids。

你可以閱讀更多關於這種方法here。這也包括Code-First的技術。