2012-09-05 36 views
5

有沒有辦法用defaultValue發送屬性,但用數據庫計算結果更新它?數據庫中有一個觸發器,對於輸入-1觸發一個計算新值的過程。如何獲得價值迴歸?如何在使用defaultValue時在Entity框架中獲取插入實體的Id?

<Property Name="ID" Type="int" Nullable="false" StoreGeneratedPattern="None" DefaultValue="-1" /> 

var x = new Stuff(); 
db.Stuff.AddObject(x); 
db.SaveChanges(); 
return x.ID //gives -1, but the computed value should be different. 
+0

我試過db.Refresh(System.Data.Objects.RefreshMode.StoreWins,x);但沒有運氣,刷新方法可能使用ID來搜索數據庫,這是我需要刷新的值。 –

回答

-2
using (var context = new MyContext()) 
    { 
     context.MyEntities.AddObject(newObject); 
     context.SaveChanges(); 

     int id = newObject.Id; // Will give u the autoincremented ID 
    } 
+3

他沒有使用自動增量,而是一個觸發器來產生一個值。 –

11

您需要重新加載savechanges.Because後,它已被一個數據庫觸發器不能用EF跟蹤改變的實體。所以我們需要重新從數據庫重新加載實體,

var x = new Stuff(); 
db.Stuff.AddObject(x); 
db.SaveChanges(); 
db.Entry(x).GetDatabaseValues(); 

return x.ID; 
+0

這看起來不錯,但是在db上下文中沒有條目 –

+0

您是先使用模型嗎? –

+1

是的,我先使用模型 –

相關問題