2009-11-05 7 views
5

मैं अपनी कंपनी (जो आजकल SQL सर्वर और ओरेकल पर चलाता है) को एएसपी नेट एमवीसी और दृढ़ता के लिए इकाई फ्रेमवर्क में माइग्रेट कर रहा हूं।इकाई फ्रेमवर्क - मैपिंग दशमलव (13,0) समस्या

ए SQL सर्वर डेटाबेस पर आधारित मेरा एंटिटी मॉडल बनाते हैं और अलग से मैं ओरेकल के लिए एक एसएसडीएल बनाता हूं (ओरेकल के लिए मैं ओरेकल प्रदाता के लिए DevArt dotConnect का उपयोग करता हूं) और मुझे कुछ दर्द परेशानी होती है।

मेरी तालिका प्राथमिक कुंजी SQL सर्वर पर हैं दशमलव (13,0) और ओरेकल पर संख्या (13,0) है लेकिन ओरेकल मानचित्र यह int64 और SQL सर्वर को दशमलव पर टाइप करता है, लेकिन मुझे उस SQL ​​सर्वर की आवश्यकता है इसे Int64 पर मानचित्र करें।

मैं पर इकाई डेटा मॉडल इन संशोधन मैन्युअल बनाने के लिए और के लिए रिकॉर्ड बनाते यह ठीक काम करता है, लेकिन जब मैं हटा सकते हैं या कुछ रिकॉर्ड मैं इन त्रुटि मिली अपडेट करना पड़ता है:

निर्दिष्ट मान प्रकार का एक उदाहरण 'नहीं है Edm.Decimal ' पैरामीटर नाम: मूल्य

at System.Data.Common.CommandTrees.DbConstantExpression..ctor(DbCommandTree commandTree, Object value, TypeUsage constantType)
at System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(DbCommandTree commandTree, EdmProperty property, PropagatorResult value)
at System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateEqualityExpression(DbModificationCommandTree commandTree, EdmProperty property, PropagatorResult value)
at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbModificationCommandTree commandTree, PropagatorResult referenceRow, PropagatorResult current, TableChangeProcessor processor, Boolean& rowMustBeTouched)
at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildDeleteCommand(PropagatorResult oldRow, TableChangeProcessor processor)
at System.Data.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler compiler)

किसी ने मेरी मदद कर सकते?

क्यों इकाई फ्रेमवर्क मैपिंग इतनी तय की गई है? यह अधिक लचीला हो सकता है?

Ps .: मुझे जो त्रुटि मिली, मुझे संदेह है कि यह एक संघ के कारण है।

मेरे पास एक संस्था है जिसका नाम प्रांत और दूसरा नाम देश है और मुझे लगता है कि इन संस्थाओं के बीच संबंध अद्यतन और हटाने पर समस्या पैदा कर रहा है।

सादर,

डगलस Aguiar

उत्तर

2

यह या आप मदद कर सकते हैं कर सकते हैं नहीं है, लेकिन मैं इस एक ही बात करने से एक ही त्रुटि थी। इसलिए मैंने संकल्पनात्मक मॉडल संपादित किया और प्राथमिक कुंजी फ़ील्ड को Int32 से दशमलव तक बदल दिया। अब तक, निश्चित चीजें हैं। मुझे अभी भी एसक्यूएल सर्वर के खिलाफ परीक्षण करने की आवश्यकता है और सुनिश्चित करें कि इससे इसे तोड़ नहीं दिया है।

0

मुझे त्रुटि मिल रही थी "निर्दिष्ट मान प्रकार का उदाहरण नहीं है 'Edm.Decimal' पैरामीटर नाम: मान" जैसा कि आपने अपने प्रश्न में पोस्ट किया था। मैंने डिफ़ॉल्ट डेटा प्रकार को दशमलव से int32 में बदल दिया था क्योंकि यह बेहतर टाइपिंग को बेहतर ढंग से प्रतिबिंबित करता है। जब मैंने पहली बार इस त्रुटि को मारा तो मैंने प्रकार के बदलावों को वापस ले लिया और अभी भी अपवाद प्राप्त हो रहा था लेकिन यह थोड़ा सा बदल गया लेकिन आगे खोदने लगा। नीचे की रेखा, मेरे परिदृश्य में हम पहले से सम्मिलित निर्देश के माध्यम से दृढ़ता के दौरान पीके को पॉप्युलेट करने की उम्मीद कर रहे थे। समस्या यह थी कि ईएफ द्वारा निर्मित डोमेन क्लास पीके को 0 पर सेट कर रहा था, इसलिए ट्रिगर कभी भी फायरिंग नहीं कर रहा था क्योंकि आने वाले पीके शून्य नहीं थे। बेशक ईएफ आपको एंटिटी पीके को बेकार करने की अनुमति नहीं देगा। शायद यह भविष्य में किसी और की मदद करेगा।