2008-08-28 5 views
33

मैंने अभी लिंक से एसक्यूएल का उपयोग करना शुरू कर दिया है, और मुझे आश्चर्य है कि अगर किसी के पास डीबीएमएल फाइलों के प्रबंधन के लिए साझा किया जा सकता है तो कोई भी सर्वोत्तम प्रथा है।लिंक से एसक्यूएल डीबीएमएल फाइलों के प्रबंधन के लिए सर्वोत्तम अभ्यास?

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

कोई अन्य युक्तियाँ और चालें आपका स्वागत है।

+0

ड्यूप्स SQL ​​करने के लिए LINQ बारे में अच्छी जानकारी प्रदान करता है।कॉम/प्रश्न/3468722/अपडेट-डीबीएमएल-फाइल, http://stackoverflow.com/questions/1716556/asp-net-mvc-best-practices-for-dbml-files –

उत्तर

19

क्या आपने SqlMetal पर देखा है? यह आधिकारिक तौर पर समर्थित है, हालांकि बहुत ज्यादा प्रचारित नहीं किया गया है। आप इसे कमांडलाइन से डीबीएमएल बनाने के लिए उपयोग कर सकते हैं - हमने इसे डीबी के निरंतर एकीकरण अपडेट के हिस्से के रूप में उपयोग किया है (सुनिश्चित करें कि यदि आप ऐसा करते हैं तो आपके पास वास्तव में अच्छा कोड अलगाव है - आंशिक कक्षाएं एक उद्धारक हैं - क्योंकि डीबीएमएल मिलेगा ओवरराइट)।

यदि मुझे सही याद है तो इसमें विजुअल स्टूडियो में मॉडल डिजाइनर के रूप में काफी सुविधाएं नहीं हैं (मुझे लगता है कि यह बहुवचन को अलग-अलग संभालता है)। वहां एक good post about it on Ben Hall's blog है।

9

तथ्य यह है कि एल 2 एस डिजाइनर डेटाबेस संरचना के साथ समन्वय का समर्थन नहीं करता है मेरे दिमाग में एक बड़ी सीमा है।

http://www.huagati.com/dbmltools/

दुर्भाग्य से, यह अब निःशुल्क है: हालांकि, वहाँ एक ऐड-इन उपलब्ध है कि कुछ फिर से समन्वयन क्षमता प्रदान करता है है।

6

PLINQO कोड पीढ़ी टेम्पलेट्स का एक सेट है जो LINQ से SQL उत्पन्न करता है। यह LINQ से SQL को उपयोग करने में आसान बनाने वाली कई अन्य सुविधाओं के साथ डेटाबेस और विभाजन इकाइयों के साथ कई कक्षाओं में समन्वय का समर्थन करता है।

http://www.plinqo.com पर साथ ही परिचय वीडियो पर PLINQO साइट देखें।

7

जब से तुम अन्य सुझाव और dbml के प्रबंधन के लिए चाल के लिए कहा ...

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

इसके खिलाफ सुरक्षा के लिए, एक चाल एक इकाई परीक्षण लिखना है जो उन (मैनुअल) सेटिंग्स के लिए LINQ मेटाडेटा को जांचने के लिए प्रतिबिंब का उपयोग करती है। यदि परीक्षण विफल रहता है, तो यह एक वर्णनात्मक त्रुटि संदेश देता है, जो उपयोगकर्ता को कॉलम गुणों में उचित परिवर्तन करने के लिए निर्देश देता है। यह एक आदर्श समाधान नहीं है, और यदि आपके पास कई मैन्युअल सेटिंग्स हैं, तो यह सुविधाजनक नहीं हो सकता है, लेकिन यह आपके और आपकी टीम के लिए कुछ प्रमुख दर्द से बचने में मदद कर सकता है।

यहां एक नैनिट परीक्षण का एक उदाहरण है यह जांचने के लिए कि कॉलम डीबी से स्वत: उत्पन्न करने के लिए सेट है। http: // stackoverflow

[Test] 
    public void TestMetaData() 
    { 
     MyObj my_obj = new MyObj() 
     { 
      Foo = "bar", 
     }; 

     Type type = MyObj.GetType(); 
     PropertyInfo prop = type.GetProperty("UpdatedOn"); 
     IEnumerable<ColumnAttribute> info = (IEnumerable<ColumnAttribute>)prop.GetCustomAttributes(typeof(ColumnAttribute), true); 
     Assert.IsTrue(
      info.Any<ColumnAttribute>(x => x.IsDbGenerated == true), 
      "The DBML file needs to have MyObj.UpdatedOn AutoGenerated == true set. This must be done manually if the DBML for this table gets refreshed from the database." 
     ); 
    }