2011-10-11 55 views
2

我有一個SalesOrder表和ID和OrderID列。 ID是一個自動生成的int。 OrderID是一個最大長度爲20的非空字符串,我們用它來存儲客戶的訂單號以供參考。無法將NULL插入實體框架中的非標識列。有趣的事情......它不是空的?

加入我的新SalesOrder和調用的SaveChanges後,我得到以下錯誤:

無法將NULL值插入列「訂單ID」,表「SalesOrder」;列不允許有空值。 INSERT失敗。 該聲明已被終止。

問題是,我保存對象實際上確實有訂單ID!它幾乎就像在保存所有值之前先試圖保存實體一樣。這是EF如何處理事情?

我的設置是EF4.1,使用EDMX模型優先方法。 StoreGeneratedPattern設置爲None。默認值目前設置爲(無),但我嘗試過各種值。實體密鑰是假的,因爲它不是密鑰的一部分。我也嘗試刪除SalesOrder實體並從數據庫中重新生成它。

+1

你可以提供代碼,你做插入? 'SaveChanges()'之前? – Paul

回答

0

我也想看看你的代碼...我在循環中填充對象然後用savechanges保存它們時遇到了類似的問題。我認爲所有的田地都有人居住,但他們沒有。

在我能提供任何真正有用的東西之前,我必須先看到在保存更改前執行的代碼。

如果你的問題和我的一樣,並且在使用迭代器填充對象後調用savechanges,那麼你可以通過將savechanges移入迭代器以便每次迭代都調用它來查找錯誤數據......但是,是所有的假設猜測沒有看到你的代碼...

相關問題