2012-09-05 9 views
5

क्या डिफ़ॉल्ट वैल्यू के साथ एक संपत्ति भेजने का कोई तरीका है लेकिन डेटाबेस गणना के साथ इसे अद्यतन करें? डेटाबेस में एक ट्रिगर है, कि इनपुट -1 के लिए एक प्रक्रिया को ट्रिगर करता है जो एक नए मान की गणना करता है। मूल्य वापस कैसे प्राप्त करें?डिफ़ॉल्ट वैल्यू का उपयोग करते समय मैं इकाई फ्रेमवर्क में सम्मिलित इकाई के आईडी कैसे प्राप्त कर सकता हूं?

<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

मैंने डीबी की कोशिश की है। रीफ्रेश (System.Data.Objects.RefreshMode.StoreWins, x); लेकिन बिना किसी किस्मत के, रीफ्रेश विधि शायद आईडी का उपयोग कर डेटाबेस की खोज करती है, जो कि मुझे रीफ्रेश करने की आवश्यकता है। –

उत्तर

-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 के बाद यह एक डेटाबेस ट्रिगर जो एफई द्वारा ट्रैक नहीं किया जा सकता है के द्वारा बदल दिया गया है फिर से लोड करने की जरूरत है। इसलिए हमें डीबी से

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

return x.ID; 
+0

यह अच्छा लग रहा है, लेकिन डीबी संदर्भ –

+0

पर कोई प्रविष्टि नहीं है क्या आप पहले मॉडल का उपयोग कर रहे हैं? –

+1

हाँ, मैं पहले मॉडल का उपयोग कर रहा हूं –

संबंधित मुद्दे