2014-08-27 10 views
8

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

इस संक्रमण के हिस्से के रूप में मैंने माइग्रेशन को माइग्रेशन नामक एक नई परियोजना में स्थानांतरित कर दिया है। जब मैं कमांड लाइन टूल का उपयोग करके माइग्रेशन निष्पादित करने का प्रयास करता हूं तो यह काम करता प्रतीत होता है लेकिन डेटाबेस में कोई माइग्रेशन लागू नहीं होता है। डेटाबेस स्ट्रिंग सही है क्योंकि यदि संस्करणइन्फो तालिका मौजूद नहीं है तो यह बनाया गया है। enter image description here

कई माइग्रेशन हैं लेकिन उनमें से अधिकतर बहुत ही सरल हैं।

enter image description here

मैं एसक्यूएल सर्वर 2012 और FluentMigrator 1.2.1 का उपयोग कर रहा: यहाँ पहले एक का एक उदाहरण है।

.\Packages\FluentMigrator.1.2.1.0\tools\migrate.exe -c "Data Source=.;Integrated Security=True;Initial Catalog=portal_test" -db sqlserver2012 -a .\source\Migrations\bin\Debug\migrations.dll 

और नमूना प्रवास:

यहाँ gunr2171 के लिए पाठ में कमांड लाइन है

using System; 
using System.Collections.Generic; 
using System.Linq; 
using FluentMigrator; 

namespace Migrations 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores")] 
    [Migration(1)] 
    public class M001_CreateAccountTable : Migration 
    { 
     public override void Up() 
     { 
      Create.Table("Accounts") 
       .WithColumn("Id").AsInt32().NotNullable().Identity().Unique() 
       .WithColumn("PartnerCode").AsString().Nullable() 
       .WithColumn("AccountType").AsInt32().NotNullable() 
       .WithColumn("Code").AsString().NotNullable().Unique().PrimaryKey() 
       .WithColumn("Name").AsString().NotNullable() 
       .WithColumn("PrimaryDomainName").AsString().Nullable() 
       .WithColumn("IsFederated").AsBoolean().NotNullable() 
       .WithColumn("IsActive").AsBoolean().Nullable().WithDefaultValue(1) 
       .WithColumn("FederatedEndpoint").AsString().Nullable() 
       .WithColumn("CreatedBy").AsString().NotNullable() 
       .WithColumn("CreatedOn").AsDateTime().NotNullable().WithDefaultValue(DateTime.Now) 
       .WithColumn("ModifiedBy").AsString().NotNullable() 
       .WithColumn("ModifiedOn").AsDateTime().NotNullable().WithDefaultValue(DateTime.Now); 
     } 

     public override void Down() 
     { 
      Delete.Table("Accounts"); 
     } 
    } 
} 
+1

क्या संस्करणइंफो तालिका में कोई पिछली माइग्रेशन है? क्या आप विजुअल स्टूडियो में डीबग (और रिलीज़ नहीं) के रूप में माइग्रेशन डीएलएल बना रहे हैं? –

+1

क्या आप कभी इस के नीचे पहुंच गए थे? –

उत्तर

5

मैं एक ही बात हो रही थी, और यह पता चला है कि के साथ विधानसभा इसमें माइग्रेशन संस्करण का उपयोग करके लिखा गया था, मान लें, 1.x, और मैं उन्हें संस्करण 2.x से Migrate.exe के साथ चला रहा था।

माइग्रेट.एक्सई का उपयोग उसी संस्करण के साथ किया गया था जो माइग्रेशन बनाने के लिए उपयोग किया गया था DLL ने इसे मेरे लिए हल किया।

+0

यह मेरे लिए काम किया है। आगे संगत नहीं होने पर, मैं समझ सकता हूं, लेकिन अपडेट करने में असफल होने पर किसी प्रकार की त्रुटि उत्पन्न नहीं करना मेरे लिए एक निरीक्षण की तरह लगता है। –

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