
рдирдорд╕реНрддреЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдЖрд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
: рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгрдмрджреНрдз рдорд╛рдЗрдЧреНрд░реЗрд╢рди: рдореВрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг ред
рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдмрджреНрдз рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдлреНрд▓реБрдПрдВрдЯрдорд┐рдЧреНрд░реЗрдЯрд░ред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рд╣реИ? рдкрд▓рд╛рдпрди рдХрд╛ рдЕрдЪреНрдЫрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╡рд┐рднрд┐рдиреНрди DBMS рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдХрд╛рд░рдгред рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд▓реЗрдЦ рд╕рд╛рдордЧреНрд░реА
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдмреНрдпреЛрд░рд╛
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд╡рдпрдВ GitHub:
github.com/schambers/fluentmigrator рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ
рдореЗрд░рд╛ рдХрд╛рдВрдЯрд╛:
github.com/tabushi/fluentmigrator12/17/2008 рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд: рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0
рд╕реА # рдЕрдВрдбрд░рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ 3.5 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рд╕рдорд░реНрдерд┐рдд DBMS
- рдЬреЗрдЯ
- MySQL
- рдУрд░реЗрдХрд▓
- PostgreSQL
- SQLite
- Microsoft SQL рд╕рд░реНрд╡рд░
рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдп
- рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБ, рд╣рдЯрд╛рдПрдБ
- рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВ, рд╣рдЯрд╛рдПрдВ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
- рдирд┐рд░реНрдорд╛рдг, рдкреНрд░рд╛рдердорд┐рдХ, рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА, рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рд╡рд┐рд▓реЛрдкрди
- рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рд╣рдЯрд╛рдПрдВ (рдмрд▓реНрдХрд┐ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдорд╛рдореВрд▓реА)
- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдХреАрдорд╛, рдЯреЗрдмрд▓, рдХреЙрд▓рдо, рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛
- рдПрдХ рдордирдорд╛рдирд╛ sql рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди, рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╕реЗ sql рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ (рдЬрдм рдкрд┐рдЫрд▓реЗ рд╕рдм рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ)
рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ
- рдлреНрд▓реБрдПрдВрдЯрдорд┐рдЧреНрд░реЗрдЯрд░ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдореВрд▓, рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
- FluentMigrator.Console - рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ
- FluentMigrator.MSBuild - MSBuild рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
- FluentMigrator.NAnt - NAnt рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
- FluentMigrator.Runner - рдХреЛрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдкрд┐рдЫрд▓реА рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ 1 .cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЫреЛрдЯреЗ рдЧреЛрд▓реЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рдиреЗ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рднреА рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕реБрдВрджрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде
рд▓рд╛рдареА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдзрд╛рд╡рдХ рдХреЛ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред - FluentMigrator.SchemaDump - рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛ред рдпрд╣ sql рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ MS SQL рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
- FluentMigrator.Tests - рдкрд░реАрдХреНрд╖рдг, рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдмрд┐рдирд╛ред NUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдФрд░ рдЕрдм рдЪрд▓реЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕рд▓рд┐рдП, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдкреНрд░рд╡рд╛рд╕
- рдкреНрд░реЛрдлрд╛рдЗрд▓
- рд╕рдВрд╕реНрдХрд░рдг рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рд╡рд░рдг
- рдПрдореНрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ sql рд╕реНрдХреНрд░рд┐рдкреНрдЯ
- рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ
рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рдЕрдзрд┐рдХ
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ
рдкреНрд░рд╡рд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
using System;
using FluentMigrator;
namespace ExampleDatabaseMigrations
{
[Migration(2011091900)]
public class ExampleMigration : Migration
{
public override void Up()
{
if (!Schema.Table( "EXAMPLE_TABLE" ).Exists())
{
Create.Table( "EXAMPLE_TABLE" )
.WithColumn( "ID" ).AsInt16().NotNullable().PrimaryKey( "PK_EXAMTABL_ID" )
.WithColumn( "NAME" ).AsAnsiString(100).NotNullable()
.WithColumn( "SHORT_NAME" ).AsAnsiString(50).Nullable()
.WithColumn( "START_DATE" ).AsDate().NotNullable()
.WithColumn( "END_DATE" ).AsDate().Nullable();
Insert.IntoTable( "IDX_EXAMTABL_NAME" )
.Row( new {Id = 1, Name = "TEST" , Start_Date = new DateTime (2011, 9, 19)});
}
if (!Schema.Table( "EXAMPLE_TABLE" ).Index( "IDX_EXAMTABL_NAME" ).Exists())
{
Create.Index( "IDX_EXAMTABL_NAME" )
.OnTable( "EXAMPLE_TABLE" )
.OnColumn( "NAME" ).Ascending();
}
if (!Schema.Table( "EXAMPLE_TABLE" ).Index( "IDX_EXAMTABL_STARDATE_ENDDATE" ).Exists())
{
Create.Index( "IDX_EXAMTABL_STARDATE_ENDDATE" )
.OnTable( "EXAMPLE_TABLE" )
.OnColumn( "START_DATE" ).Ascending()
.OnColumn( "END_DATE" ).Ascending();
}
}
public override void Down()
{
if (Schema.Table( "EXAMPLE_TABLE" ).Exists())
Delete.Table( "EXAMPLE_TABLE" );
}
}
}
* This source code was highlighted with Source Code Highlighter .
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдЯреЗрдмрд▓ / рдЗрдВрдбреЗрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг рдпреЛрдЬрдирд╛ рдХрд╛ рдХрд╣реАрдВ рднреА рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдкрд▓рд╛рдпрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ, рдпрд╣ рд╣рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдирдВрдмрд░рд┐рдВрдЧ рдлреЙрд░реНрдо yyyMMddxx рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛, рдЬрд╣рд╛рдВ: yyyy рд╡рд░реНрд╖ рд╣реИ, MM рдорд╣реАрдирд╛ рд╣реИ, dd рджрд┐рди рд╣реИ, xx 00 рд╕реЗ 99 рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреНрд░рдо рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреНрд░рдорд╛рдВрдХрди рдЕрдзрд┐рдХ рдХрд╣рддреЗ рд╣реИрдВ рдкреНрд░рд╡рд╛рд╕рди рдХреЗ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдпрд╣рд╛рдВ рд░реБрдХреЗрдВрдЧреЗред
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
using FluentMigrator;
namespace ExampleDatabaseMigrations
{
[Profile( "Example" )]
public class ExampleProfile : Migration
{
public override void Up()
{
//do something
}
public override void Down()
{
//empty, not used
}
}
}
* This source code was highlighted with Source Code Highlighter .
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рднреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдк рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧрд┐рддреБрдм рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбрд╛рдЙрди рд╡рд┐рдзрд┐ рднреА рднрд░реА рдЬрд╛рддреА рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐:
- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрд╕рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛;
- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рдлрд▓ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛, рддреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдВрдХрдбрд╝реЗ рдпрд╛ рдХреБрдЫ рдФрд░ рд▓реАрдЬрд┐рдПред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреБрдирд░реНрд╕рдВрдпреЛрдЬрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рдмрди рдЧрдП рд╣реИрдВред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬреАрдердм рдореЗрдВ рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╣рд╛рдЗрдмреНрд░рд┐рдб - рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирдВрдмрд░ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрд╡рд▓рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓ рдЧрдИ рдереА, рдЗрд╕рд▓рд┐рдП рдЙрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдПрдХ рдЕрд╕рдлрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЧрдИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░, рдпрджрд┐, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХреБрдЫ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрдЪрд░рдг, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
рд╕рдВрд╕реНрдХрд░рдг рддрд╛рд▓рд┐рдХрд╛
using FluentMigrator.VersionTableInfo;
namespace ExampleDatabaseMigrations
{
[VersionTableMetaData]
public class ExampleVersionInfo : IVersionTableMetaData
{
public string SchemaName { get { return "EXAMPLE_SCHEMA" ; } }
public string TableName { get { return "EXAMPLE_VERSION_TABLE" ; } }
public string ColumnName { get { return "EXAMPLE_VERSION_COLUMN" ; } }
}
}
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕реНрдХреАрдорд╛ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдпреЛрдЬрдирд╛ рд╕реЗ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░реНрдХрд┐рдЯ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдВрдмреЗрдбреЗрдб рд▓рд┐рдкрд┐рдпреЛрдВ
рдПрдВрдмреЗрдбреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдпрдорд┐рдд рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВ рдФрд░ рд╕рдВрдкрддреНрддрд┐ "рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди" = "рдПрдВрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрди" рд╣реИред рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрдЧрд▓рд╛, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдКрдкрд░ рдХреА рдУрд░ рдкрд▓рд╛рдпрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдХрд╛рд░реНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
- рдкреНрд░реЛрдЧреНрд░рд╛рдо (рд░рдирд░) рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдФрд░ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдФрд░ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ рд╡рд╣ рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ)ред
- рд░рдирд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред
- рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдзрд╛рд╡рдХ рдЙрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдареЛрдХрд░ рдЦрд╛рдИ (рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде, рдЬреЛ рдмрд╛рдж рдореЗрдВ рд╕реВрдХреНрд╖реНрдорддрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)ред
рдПрдХ рдкреНрд░рд╡рд╛рд╕
рдкреНрд░рд╡рд╛рд╕рди рдХреЛ 2 рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдЕрдк () рд╡рд┐рдзрд┐ (рдпрд╛ рдиреАрдЪреЗ) рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ), рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ sql рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ
рдмреНрдпреЛрд░рд╛
рдкрд░рд┐рд╡рд░реНрддрди рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА DBMS рдбреАрдбреАрдПрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд░реЛрд▓рдмреИрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реЗ DBMS рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдкрд░реЗрд╢рди рд╕реЗ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рдкрд▓рд╛рдпрди рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдСрдкрд░реЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рд╕рднреА рд╕рдорд░реНрдерд┐рдд DBMS (рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереАред рдлрд┐рд░ рднреА, рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ DBMS рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ DBMS рдСрдЯреЛ-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдХреНрд░рдордмрджреНрдзрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реНрдкреАрдХрд┐рдВрдЧ рдирд╛рдо ifDatabase рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдЪрдорддреНрдХрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ DBMS рдкрд░ рдХреНрдпрд╛ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ DBMS рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдХреАрдбрд╝реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ - рдареАрдХ рдХрд░реЗрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕реНрд╡рдпрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред
рдкреБрдирд╢реНрдЪ: рдореИрдВ рдЖрдкрд╕реЗ рдпрд╣ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдФрд░ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред