2015-06-09 40 views
0

我在C#中使用帶有Code First的實體框架。DbSet內容與數據庫內容不同

我想從我的數據庫使用DbSet顯示其中一個表的內容,但它不同於數據庫中該表的實際內容。 我在同一時間查看DbSet和表,但DbSet尚未更新。

這是我所看到的: The table in the database

The DbSet while debugging

我想明白爲什麼集合的元素個數4具有不同類型的比別人。

如果我關閉程序並重新打開它,然後DbSet得到更新。

感謝

+0

0-3是代理類,用於延遲加載。 Number 4是你Attach()ed的一些實例,可能是通過MVC發佈的。但那不是你的問題,是嗎?您的視圖缺少'EstaFinalizado'列的輸入元素,因此您嘗試保存的實體的默認值爲bool,爲false。這不正確地更新您的數據庫記錄。在更新的情況下,您需要首先從數據庫加載現有實體,然後從發佈的模型中分配適當的屬性並保存更改。 – CodeCaster

+0

如果是這種情況,我並不知道,但要記住,在實體被水合後發生的對數據庫的任何更改都不會反映在您的對象上,因爲查詢只會執行一次。 – bateloche

+0

數字4的類型因擴展三個而不同 – bateloche

回答

0

元素4號是新創建所以EF不創建一個代理的一個元素。 元素不反映數據庫更改的問題可能有幾個。例如,
- 元素4僅在內存中創建,而不是其他人(另一個上下文)更新元素。 - 元素4剛剛在內存中創建,並帶有一些空字段,並且SQL添加了一些默認值。
- ...