2011-11-02 6 views
9

का उपयोग कर रहा इकाई मॉडल है जो मैं डेटाबेस के लिए हर बार जब मैं अनुप्रयोग चलाने लेकिन इस प्रकार डेटा को साफ़ करने के बिना मैं एक तरह से धाराप्रवाह NHibernate मैपिंग विधि के साथ SchemaUdpate उपयोग कर रहा हूँ परिलक्षित होना चाहते हैं स्तंभ को बदलने के लिए कैसेnhibernate SchemaUpdate कार्यक्षमता

var config = Fluently.Configure().Database 
(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)); 
//here I add mappings , apply conventions, build configuration, etc... 
// 
new SchemaUpdate(configuBuild).Execute(doUpdate: true, script: true); 

तो मेरा इकाई मॉडल लगभग हर समय सही ढंग से अपडेट हो जाता है। समस्या जब मैं एक संपत्ति की परिभाषा को बदलने, देता है कि कहते हैं कि मैं इस तरह की संपत्ति थी

[CustomSqlType("nvarchar(400)")] 
public virtual string Name { get; set; } 

CustomSqlType सिर्फ एक विशेषता है जो एक निश्चित प्रथा के अनुसार लागू किया जाएगा जब मैपिंग लोड किए गए हैं है। इस मामले में, नाम संपत्ति nvarchar(400) फ़ील्ड के रूप में बनाई जाएगी। लेकिन अगर भविष्य में मैं इस

[CustomSqlType("nvarchar(500)")] 
public virtual string Name { get; set; } 
सही hbm.xml फ़ाइल से

को परिभाषा बदलने उत्पन्न होगा (सही साधन nvarchar (500)), लेकिन डेटाबेस में स्तंभ इवेंट को अपडेट नहीं किया गया है, हालांकि इस तरह के बदलने मान्य है डीबी परिप्रेक्ष्य से। क्या SchemaUpdate का उपयोग कर नई लंबाई/सटीक/निरर्थक बाधा के साथ मौजूदा कॉलम को बदलने (मौजूदा स्क्रिप्ट को उत्पन्न करना) संभव है?

उत्तर

9

ठीक है मैंने पाया है कि यह नामुमकिन है, नीचे दिए गए वहाँ से SchemaUpdate

foreach (Column column in ColumnIterator) 
     { 
      IColumnMetadata columnInfo = tableInfo.GetColumnMetadata(column.Name); 
      if (columnInfo != null) 
      { 
       continue; 
      } 

      // the column doesnt exist at all. 
      // other not important code 
     } 

निष्पादित जैसा कि आप देख अगर स्तंभ मौजूद है यह डिफ़ॉल्ट रूप से कुछ नहीं करता है कोड है।

+0

वह वास्तव में बदबू आ रही है। आपने अपनी स्कीमा पर अपडेट को मजबूर करने के लिए क्या किया? – Mithon

+0

धन्यवाद! मैंने उम्र जानने में कोशिश की है कि यह मेरी डिफ़ॉल्ट बाधाओं को क्यों अपडेट नहीं कर रहा है! - क्या आप एक कामकाज खोजने के लिए प्रबंधन किया था? – Zack