0

は、私は非常に基本的なモデルクラスEntity Frameworkのコードファーストアプローチの後、接続文字列が作成されないのはなぜですか?

class Student 
{ 
    public int StudentID { get; set; } 
    public string Ad { get; set; } 
    public string Soyad { get; set; } 
} 

class StudentContext: DbContext 
{ 
     public StudentContext() :base("StudentDB") 
     { 
     } 

     public DbSet<Student> Students { get; set; } 
} 

は、私はまた、コンソールアプリケーションやASP.NET MVCの両方で試してみた非常に基本的なDbContextクラスを持っている(ノーDBが作成しました) 5プロジェクトいずれも機能しませんでした:/

アプリケーションをビルドして実行すると、データベースが作成されません。私が調べると、ベースコンストラクタのDB Nameのパラメータを渡したにもかかわらず、app.configまたはweb.configに接続文字列が挿入されていないことがわかりました。

Entity Framework Nugetパッケージは、各試行前にインストールされ、以前のデータベースの最初のプロジェクトでは正常に動作しました。なぜ私は最初の実行時にデータベースを作成できないのか分かりません。私もコンソールプロジェクトのMain()機能に以下の行を追加しようとしました:

StudentContext ctx = new StudentContext(); 
ctx.Database.CreateIfNotExists(); 

は動作しませんでした:/

+0

まず、あなたのパッケージ(エンティティ)を更新し、ヨーヨーに移行パッケージを追加ウルプロジェクト。あなたの 'web.config'がOKであることを確認してください。この方法で試してみてください。 – pnet

答えて

0

それはDbContext(と言うんを使用しているときには使用できません。文字列)はapp.configに接続文字列を作成しますか? DbContext classの備考セクションに接続文字列が記述されています。しかし、DbContextクラスがapp.configを調整するところはどこにもありません。

app.configを変更すると、望ましくない動作になります。同じDbContextで2つの同様のデータベースを制御したい場合、たとえばあるデータベースから別のデータベースにデータをコピーする場合はどうでしょうか?

DbContextインスタンスの使用を作成した後、接続文字列を取得するには:

dbContext.Database.Connection.ConnectionString; 

あなたはApp.configファイルに接続文字列を作成したい場合は、私はあなたのための拡張機能を記述しますことをお勧めしたいですそれ:

static class DbContextExtensions 
{ 
    public static void SaveConnectionString (this DbContext dbContext) 
    { 
     string connectionString = dbContext.Database.Connection.ConnectionString; 
     SaveConnectionString(connectionString); 
    } 
    private static void SaveConnectionString(string connectionString) 
    { // save the string where you want it, for instance app.config 
     // out of scope of this question 
    } 
} 

使い方

using(var dbConext = new StudentContext("..."); 
{ 
    dbContext.SaveConnectionString(); 
} 
0

を代替オプションは次のようになります - "イニシャライザ"。あなたがアプリケーションにデータベースを作成する場合は、いずれかを起動し、使用:

context.Database.Initialize(true); 

が、あなたは「イニシャライザ

ctx.Database.CreateIfNotExists(); 
関連する問題