2009-03-12 9 views
6

में "माध्यमिक" कुंजी को कैसे संभालें I मौजूदा स्कीमा के खिलाफ ईएफ का उपयोग करके मूल्यांकन कर रहा हूं - समस्या यह है कि मैं उन तालिकाओं के बीच एसोसिएशन सेट अप करने का तरीका नहीं बना सकता जहां विदेशी कुंजी प्राथमिक कुंजी नहीं है मास्टर टेबल का।एंटिटी फ्रेमवर्क

उदाहरण के लिए, एक foo कई bars के रूप में इस तरह परिभाषित किया गया हो सकता है (स्यूडोकोड माफ):

table foo { 
    int foo\_id pk, 
    char(10) foo\_code, 
    ... 
} 

table foobar { 
    int bar\_id pk, 
    char(10) bar\_foo\_code fk(foo.foo\_code), 
    ... 
} 

क्या मैं foo_foobar संघ बनाने के लिए सक्षम होने के लिए याद आ रही है, और इसलिए एक Bars नेविगेशन संपत्ति Foo इकाई पर?

+0

हमारे यहां एक ही समस्या थी और अंत में हमारे डेटाबेस में परिवर्तन करना पड़ा ताकि विदेशी कुंजी केवल प्राथमिक कुंजी की ओर इशारा कर सकें। क्या आपके डेटाबेस स्कीमा को बदलने का कोई तरीका नहीं है? – CraftyFella

+0

दुर्भाग्य से नहीं - स्कीमा विरासत कारणों के लिए एक दुःस्वप्न है, और हमें इसके साथ अंतःक्रिया करना होगा। बेकार है, मुझे पता है। कहा जा रहा है कि, मैंने ऐसे मामलों को देखा है जहां प्राथमिक कुंजी और एक अलग (संभावित रूप से समग्र) विदेशी कुंजी दोनों के लिए यह पूरी तरह से सही है। – Rammesses

उत्तर

3

इकाइयों के लिए लिंक विदेशी कुंजी का समर्थन नहीं करता है जो किसी तालिका की प्राथमिक कुंजी को इंगित नहीं करता है (लॉग संदेश 3 देखें)। इकाइयों के लिए लिंक एक मेज पर एक सामान्य क्षेत्र के रूप में इसका इलाज करेंगे। आप उस इकाई से नेविगेट करने में सक्षम नहीं होंगे जो इससे जुड़ा हुआ है।

यदि आपके पास मौजूदा स्कीमा है तो मैं edm generator का उपयोग करने की अनुशंसा करता हूं क्योंकि इससे ईएमडीएक्स फ़ाइल, कोड पीछे और यहां तक ​​कि दृश्य कोड (जो बहुत बड़ा हो सकता है) बना देगा। यदि आपकी मौजूदा योजना काफी बड़ी है तो यह post देखें, जो बताती है कि बड़े स्कीमा से कैसे निपटें।

जब आप ईडीएम जनरेटर चलाते हैं तो आपको उन सभी चीजों को पता चल जाएगा जो समर्थित नहीं हैं।

पिछले EDMGen2.exe को देखते हुए लोग इन हम संदेशों के निम्नलिखित प्रकार वापस मिल:

  1. डेटा प्रकार 'sql_variant'
    का समर्थन किया, स्तंभ 'columnName' तालिका में 'TableName' नहीं है को बाहर रखा गया था।
  2. तालिका/दृश्य 'tableName' प्राथमिक कुंजी परिभाषित नहीं है। कुंजी अनुमान लगाया गया है और परिभाषा केवल पढ़ने के लिए तालिका/दृश्य
  3. संबंध 'RelationshipName' कॉलम कि का हिस्सा नहीं हैं के रूप में बनाया गया था रिश्ते की प्राथमिक पक्ष पर तालिका के प्रमुख जो समर्थित नहीं है, संबंध को बाहर रखा गया था।

हमने यह भी पाया है कि लिंक परियोजना वास्तव में विजुअल स्टूडियो को बहुत दुर्घटनाग्रस्त कर देती है क्योंकि ईडीएम द्वारा उत्पादित कोड फ़ाइल 80 एमबी से अधिक थी।