0

これらは Entity Framework Code First ワークフローの最初のステップであるため、単純なものが欠けている可能性があります。DbContext から継承するコンテキスト クラスを作成しました

public class Context : DbContext
{
    public DbSet<Book> Books { get; set; }
    public DbSet<Author> Authors { get; set; }
}

そして、コントローラーコードで実行します:

var author = new Author()
{
  FirstName = "Julia",
  LastName = "Lerman"
};

using (var context = new Context())
{
  context.Authors.Add(author);
  context.SaveChanges();
}

EF 用に設定した他のコードや構成はありません。アプリケーションを起動してコントローラーでコードをヒットすると、すべて正常に動作しますが、唯一の問題は、データベースが実際には SQL Server で作成されず、ローカルで実行されることです。つまり、アプリケーションの実行時に SQL Server Management Studio を使用してデータを検査することはできません。

web.config に自動的に次のキーが追加されていることがわかりました。

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=false;" providerName="System.Data.SqlClient" />

このデータベースがインプロセスではなく実際の SQL Server Express で実行されるようにするために、この構成キーを変更するにはどうすればよいですか (または他に何かする必要がありますか)。

4

1 に答える 1

1

OK、「Programming Entity Framework:Code First」の本のおかげで、どうやら設定より規約であることがわかりました。取得するクエリ文字列の名前は、Contextクラスの名前と一致する必要があります( DbContextから継承したもの)。したがって、次のような新しい接続文字列を追加する必要があります。

<add name="Context" connectionString="Data Source=.\SS2012EXPRESS;Initial Catalog=HomeLibrary;Integrated Security=True" providerName="System.Data.SqlClient" />

元の接続文字列はそのままにしておくことができ、実行時には使用されません。私はそれの目的が何であるか完全にはわかりません。

于 2012-12-30T03:47:44.053 に答える