2010-08-19 30 views
0

我有一個表是一個可爲空的整數字段,它是一個外鍵。當我嘗試將實體模型的Nullable屬性設置爲True時,我得到一個錯誤,指出Int32類型的字段不能爲空。因此,如果實體框架不支持可爲空的整數,那麼如何將空值插入到表中?如果沒有爲空值屬性指定值,Entity Framework會插入值爲0的值,由於外鍵約束而引發錯誤。如何處理實體框架中的可爲空的外鍵字段?

SQL Server罰款與一個可空的外鍵,所以我想保持檢查約束到位。我在這裏有什麼選擇?

在此先感謝!

+1

假前提。 EF *不支持可空int。但是'int'和'int?'是兩種不同的類型。針對可空int列生成新模型,您會看到。聽起來像你的數據庫模型不是你想象的那樣。 – 2010-08-19 19:10:35

+0

好的,所以問題是,在將實體模型的Nullable屬性設置爲True之後,我還必須將外鍵關係的Multiplicity屬性設置爲Zero或One。這使得錯誤消失併產生了正確的模型。我很驚訝,當我嘗試從數據庫更新模型時,EF並沒有這樣做,但是無論如何我現在都準備好了!如果您將我的斷言改正爲答案,我會接受它。謝謝! – 2010-08-19 19:31:33

回答

2

EF 確實支持可空int。但int和int?是兩種不同的類型。針對可空int列生成新模型,您會看到。

更新模型的原因並未改變關聯的多樣性,因爲EF會在您更新時嘗試保留您的CSDL自定義項。它將主要從頭開始重新生成SSDL,並將新的對象/關係添加到CSDL中,但不會覆蓋您可能做出的更改。