2012-10-27 40 views
1

我不斷收到此錯誤:EF 4.1空插入GUID是不是空

無法將NULL值插入列 'ID',表 'database.dbo.Employees';列不允許有空值。 INSERT 失敗。\ r \ n聲明已終止。

但對象具有這個屬性Guid.NewGuid()

設置我使用實體框架4.1和.NET Framework 4.0。

該列是主鍵而非空。我沒有使用Code First方法。

編輯:如果我手動編輯文件edmx,似乎運行自定義工具不會更新文件。

回答

3

如果標記的關鍵特性,如用流利的API或數據註解你的模型自動生成的身份會發生這種情況?

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public Guid Id { get; set; } 

...(其具有的效果是EF不會將Id值發送到數據庫,因爲它期望在那裏生成密鑰),但在數據庫表中,您沒有指定Id列的默認值爲newid(),因此數據庫不會生成新密鑰。

我想要將Guid值從客戶端手動發送到數據庫從模型中刪除DatabaseGeneratedOption.Identity規範。

+0

仍然沒有解決問題 –

+0

我發現問題,但你的建議答案不是問題。 –

+0

我會給你+1,因爲你在EF中教給我一些新的東西。但似乎如果我手動編輯文件運行自定義工具將無法正確更新實體 –

0

導致錯誤的問題是運行自定義工具沒有完全更新實體。從SQL插入工作,所以我試圖恢復從Slauma建議的變化和實體的其他變化。