我使用Visual Studio 2010 SP1與MVC3工具更新和EF 4.1代碼優先支架我的應用程序的數據庫。EF 4.1上的INSERT失敗代碼優先數據庫
數據庫CRUD操作在本地和本地數據庫上進行測試時工作正常。直到我將數據庫遷移到Web主機的SQL Server 2008 R2並將連接字符串中的託管數據庫作爲所有INSERT操作失敗的目標。
每當我嘗試添加新記錄時,出現此錯誤:[I]無法將值NULL插入'Id'列'DB_23378_bloomlmsdata.dbo.Courses'列;列不允許有空值。 INSERT失敗。該語句已終止[/ I]
我的數據模型都指定一個主標識鍵,像這樣:
[Key]
public int Id {get; set;}
...
而在這被搭建的本地數據庫中,我看到一個非空的主身份鍵入每個表格。
我在某處讀到Entity Framework時,在對數據庫執行INSERT操作時,它首先會嘗試插入一個空值爲主鍵的記錄。我不知道如何覆蓋這種行爲。此外,這似乎不是一個常見問題,人們通常只會在使用與IDENTITY鍵不同的東西時遇到此問題。爲了記錄,在EF 4.1發佈之前,我有與EF CodeFirst CTP5相同的問題。
我一直在解決這個問題,爲期4周。我的網絡主機是最新與我在我的應用程序和數據庫中使用的技術。當我嘗試獲得幫助時,他們告訴我這是一個編碼問題,但是我的代碼已檢出。任何想法將不勝感激。
您是否在數據庫中使用自動生成的標識值(標識)? – 2011-05-26 14:56:31
是----------- – BumbleB2na 2011-05-26 15:02:41
當您從SQL Server Management Studio發出INSERT命令時它工作嗎?您也可以測試'DbContext.Database.ExecuteSqlCommand'來執行原始SQL INSERT命令,以縮小問題的範圍。 – Slauma 2011-05-26 21:17:19