2009-05-03 8 views
8

NHibernate के साथ अपना पहला कदम बनाना, मैं इसे एचबीएम फ़ाइलों से स्वचालित रूप से अपने टेबल्स बनाने की कोशिश कर रहा हूं। डेटाबेस बैकएंड SQL सर्वर 2008 डेवलपर संस्करण है।NHibernate SchemaExport टेबल नहीं बनाता है जब "स्क्रिप्ट" गलत होता है

var cfg = new Configuration(); 
cfg.Configure(); 
cfg.AddAssembly(typeof(Posting).Assembly); 
new SchemaExport(cfg).Execute(false,true,false,false); 

दुःख की बात यह काम नहीं करता:

यह आम नमूना कोड NHibernate ट्यूटोरियल में मैं देख रहा हूँ है। मैंने show_sql को सत्य पर सेट किया है, और यह किसी कथन को प्रिंट नहीं करता है। एसक्यूएल प्रोफाइलर को देखकर मैं अपने आवेदन को डीबी से कनेक्ट कर रहा हूं, लेकिन फिर कुछ भी नहीं कर रहा हूं।

मुझे लगता है कि ठीक कर सकते हैं सच करने के लिए पहले पैरामीटर ("स्क्रिप्ट") को बदलने के द्वारा:

new SchemaExport(cfg).Execute(true,true,false,true); 

मैं क्यों समझ में नहीं आता। SchemaExport के पैरामीटर दुख की बात नहीं है (वास्तव में .क्रेट और .xecute के बीच का अंतर नहीं), और मैं यह जानना चाहता हूं कि यह पैरामीटर क्या करता है, और इसकी आवश्यकता क्यों नहीं है यानी SQL कॉम्पैक्ट संस्करण का उपयोग करते समय (जो तब भी काम करता है स्क्रिप्ट गलत है)

उत्तर

27

SchemaExport Hbm2Ddl उपयोगिता का हिस्सा है जो वास्तव में NHibernate कार्यक्षमता से अलग है। यह "show_sql" का उपयोग नहीं करता है जिसका प्रयोग एनएचबीर्नेट केवल तभी चल रहा है।

स्कीमा आपके द्वारा बनाए गए आप .SetOutputFile (फ़ाइल का नाम)

का उपयोग इस विधि का उपयोग मैं जब मैं एक नया डेटाबेस बनाना चाहते है की एक प्रति प्राप्त करने के लिए। मैं MyDDL.sql फ़ाइल में स्वरूपित स्कीमा मिलता है और डेटाबेस स्कीमा से बनाया गया है:

private void BuildSchema(Configuration config) 
{ 

     new SchemaExport(config) 
      .SetOutputFile(_fileName + "MyDDL.sql") 
      .Execute(true /*script*/, true /*export to db*/, 
        false /*just drop*/, true /*format schema*/); 
} 

SchemaExport.Create बस सिर्फ झूठे और प्रारूप सच ड्रॉप के साथ Schema.Execute के लिए एक शॉर्टकट है।

public void Create(bool script, bool export) 
    { 
     Execute(script, export, false, true); 
    } 
+0

मैं इसका उपयोग NHibernate 3.3 के साथ कर रहा हूं, यह फ़ाइल पर लिख रहा है, लेकिन डेटाबेस के लिए नहीं। –

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