2016-09-21 11 views
5

Azure Appサービスに配備されたWebアプリケーション(Net Core 1.0.0-preview2-003121)があり、私たちは移行を苦労しています。 RC1/2でAzure App ServicesでのEFコア(1.0.0)の移行

つまり、我々は

dnx ef database update 

を実行するには、このファイルを使用することができ、自動的にそこに見えたef.cmdファイルを使用して移行を行うことが可能であったが、これがなくなっています。

dotnet efはAzure App Service自体にインストールされていないため、これはオプションではありません。

コードからの移行の実行やVisual Studioからの移行に関係しないアイデアはありますか?

私たちは継続的なデプロイメントパイプラインを構築しようとしています。コードからの移行を強制的に避けています。

それは私の人生のために何かを見つけることができませんようMYグーグルのfuは明らかに私をここに失敗していると私は、サーバー

TIA

+0

を走る小さなPowerShellスクリプトを持っています。 https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html – Ben

+0

@Benそれは確かにあります。私はドットネットがインストールされていないことに言及することでその事実を暗示した。おそらく私が空のアプリケーションサービス自体であって私のマシンではないことを明確にしていないとはっきりしない。 – ManyRootsofAllEvil

答えて

2

の移行を展開しようとしている唯一のことはできません私たちがやってしまったことである:

ビルド面では、我々は冪等データベース作成スクリプトを生成します。

のApplicationContextはヨーヨーの名前です
dotnet ef migrations script --idempotent --output migrations.sql --context ApplicationContext 

ur EFコンテキストおよびmigrations.sqlはSQLスクリプトファイル名です。

は、その後の展開側に我々は効果的にCLIが変更されたmigrations.sqlスクリプト

param(
[Parameter(Mandatory)] 
[string]$server, 
[Parameter(Mandatory)] 
[string]$dbname, 
[Parameter(Mandatory)] 
[string]$dbadmin, 
[Parameter(Mandatory)] 
[string]$dbpassword, 
[Parameter(Mandatory)] 
[string]$migrationPath 
) 

function Deploy-Migrations ($migrationPath,$DBSettings) 
{ 
    #Setting up database connection 
    $connection = New-Object System.Data.SqlClient.SqlConnection 
    $connection.ConnectionString = [string]::Format("Data Source=tcp:{0}.database.windows.net,1433;Initial Catalog={1};User Id={2}@{0};Password={3};MultipleActiveResultSets=True", $DBsettings['sqlServerName'], $DBsettings['databasename'],$DBsettings['adminAccount'], $DBsettings['adminPassword']) 

    try 
    { 
     $connection.Open(); 

     $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
     $SqlCmd.Connection = $connection 
     $query = Get-Content $migrationPath 
     $sqlCmd.CommandText = $query.Replace("GO","") # This is required to prevent "syntax" complaints 
     $sqlCmd.ExecuteNonQuery() 

     Write-Host "Migration Deployed" 
    } 
    Catch 
    { 

     Write-Error "oops ... PAnic ... $($_.Exception.Message) on $($_.Exception.ItemName)" 
     break 
    } 
    Finally 
    { 
     $connection.Close() 
    } 
} 

$DBSettings = @{"sqlServerName"=$server; "databasename"=$dbname; "adminAccount"=$dbadmin; "adminPassword"=$dbpassword } 

Deploy-Migrations $migrationPath $DBSettings 
+2

ありがとう。時にはASP.NET Coreを使って作業していると、私は今まで使ったことのある世界で唯一の人だと感じています。 O_O SQLスクリプトは.... –

関連する問題