最近エンティティフレームワークの移行を開始しましたが、Update-Database
コマンドを実行したときにデータベース名が引き込まれていないことに気付きました。Entity Frameworkの移行を使用するときに明示的にデータベースの名前を付ける方法4.3
マイれたconnectionStringは、次のとおりです。
<connectionStrings>
<add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" />
</connectionStrings>
非常に最初の時間は、私がアップデート - データベース私のデータベースが正しい名前TestDBとを使用して作成されて実行されます。私は(私はマルチプロジェクトソリューションを使用しています)スタートアッププロジェクト名を追加しない限りしかし、すぐに私は私のエンティティのいずれかに変更を加えたとして、それは私のために、もはや更新されません。
Update-Database -StartUpProjectName "TestDB.Data"
この後、移行で常に使用される別の新しいデータベースを作成します。 StartUpProjectNameコマンドを入力する必要はありませんが、これが生成するデータベースのデフォルト名を上書きする方法はありますか?それは、常にStartUpProject名を渡すときに作成したデータベースがちょうどTestDBとと呼ばれていることを確認する方法はあり
TestDB.Data.DataContext
としてデータベースを作成するか、これはStartUpProjectNameの設定を使用しての制限ですか?
私はStartUpProjectNameを指定する必要がある理由は、私が多層プロジェクトセットアップを持っていることだと思います。 Migrations Configurationファイルは私の 'Data'プロジェクトにあり、エンティティ/モデルは私の 'Domain'プロジェクトなどにあります。私は現在、以前Global.asax.csファイルに初期化オプションを持っていません最初のコード4.2。私のプロジェクトでは、データプロジェクトにDataContextがあり、そのプロジェクトにはMigrations Configurationもあります。
編集:私、もともとセットアップ以来
私はマルチ溶液中のデータベースに名前を付けるために「正しい」方法につまずいたこの質問。以下の答えがうまくいくのは理想的な解決策ではない別の領域にweb.configを複製しているということです。代わりに、あなただけ(DataContextのは、私は私のプロジェクトで使用される単なる名前です)、このような何かを行うことによって、あなたのDbContextに名前を入れることができます。
public class DataContext : DbContext
{
public DataContext() : base("DatabaseNameHere")
{ }
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public virtual void Commit()
{
base.SaveChanges();
}
}
おかげで、
リッチ
編集していただきありがとうございます。私にはたくさんの助けがありました.. – Josh
編集済みの回答は宝石です! – P6345uk
さらに、私はこの記事を参考にしました。 http://msdn.microsoft.com/en-us/data/jj592674.aspx – billb