2011-05-24 72 views
0

說,我定義在DB表如下實體框架4個,用於數字字段不尊重數據庫約束

表:富
PKID - INT,伯,自動增量
酒吧 - INT,允許空=假,沒有默認

現在,當從數據庫中生成EF模型時,'Bar'字段被正確地定義爲Nullable = false,Type = Int32。

現在,當我做了以下

var foo = new Foo(); 
context.AddToFoos(foo); 
context.SaveChanges(); 

該行被插入到數據庫和「酒吧」有0值?我會期待一個例外,因爲Bar尚未設置。我意識到0不是null,但它也不是我設置的值。

這是設計還是我誤解了一些東西?

回答

2

它不是空的,因此是一個int。 int的默認值是0.所以DB很高興,框架也很好。

+0

是的,我明白,但從技術上來說,價值尚未確定,首先就是約束所在。很奇怪。 – bic 2011-05-24 13:39:13

+1

這是一個DB約束。對於.NET,Int32的默認值爲0.這就是爲什麼我說,數據庫沒有抱怨。 – 2011-05-24 13:42:09

+0

謝謝,所以我可能不得不改寫/轉發我的問題。你知道我在EF尋找甚麼可能嗎? – bic 2011-05-24 13:44:18