2012-08-31 12 views
7

मैं एक SQL सर्वर डेटाबेस के साथ ईएफ का उपयोग कर रहा हूँ।ट्रिगर के बजाय इकाई फ्रेमवर्क

insert into Target (value, someFk) 
select value, 4 from inserted 
select id from Target where @@ROWCOUNT > 0 and id = scope_identity() 

मैं एक एफई edmx में दृश्य मैप किया: मैं एक दृश्य और उस दृश्य जो इस तरह दिखता है के लिए एक Instead Of Insert ट्रिगर बनाया। जब मैं जब मैं SaveChanges() फोन एक इकाई मैं निम्नलिखित अपवाद को जोड़ने का प्रयास:

EntitySet 'TargetView' अद्यतन करने के लिए है क्योंकि यह एक DefiningQuery है और कोई तत्व तत्व में मौजूद वर्तमान का समर्थन करने में असमर्थ ऑपरेशन।

दृश्य में मैपिंग में चिह्नित एक पहचान कॉलम है।

कोई सुझाव?

उत्तर

3

यदि आप किसी XML फ़ाइल के साथ EDMX फ़ाइल खोलते हैं, तो उस अनुभाग में जहां TargetView परिभाषित किया गया है, आपके पास निम्न के जैसा कुछ XML होगा;

<EntitySet Name=".." 
      EntityType=".." 
      store:Type="Views" 
      store:Schema=".." 
      store:Name=".."> 
<DefiningQuery>SELECT ....</DefiningQuery> 

आपको सीआरयूडी संचालन के लिए इस एक्सएमएल अनुभाग को बदलने की जरूरत है;

<EntitySet Name=".." 
      EntityType=".." 
      store:Type="Tables" 
      Schema=".." /> 
+1

+1 यह भी देखना इस लिंक http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables/ – StuartLC

+0

@ nonnb महान लेख जो वैकल्पिक तरीकों का वर्णन करता है; साझा करने के लिए धन्यवाद। – daryal

+0

यह काम करता है, लेकिन यह बहुत गलत है। आशा है कि ईएफ 5.0 यहां कुछ सुधार जोड़ देगा। – Jaster

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