Entity Framework 4.1 Code First で接続先を変更する

Entity Framework 4.1 Code Firstでは特にコードやApp.Configの記述をしなければ、標準ではローカルの”.\SQLEXPRESS”というインスタンスのSQL Serverに”Project name.DbContext class name”という名前でデータベースを作成し、そこにDbContextでテーブルとして定義されたクラスの名前でテーブルを作成します。

現実にはこのままで良いケースはまれで、何らかの形で接続先やデータベースは変更する必要があるはずです。

接続先の変更はコードで記述することもできますが、お気軽で、コードを汚さないという点ではApp.Conftg/Web.Configで記述することです。

まずは前回のプロジェクトにApp.Configを追加します。

追加したApp.ConfigにconnectionStringを追加します。



  
        
  

connectionStringにはaddエレメントを追加し、addエレメントにはname, providerName, connectionStringアトリビュートを追加します。

nameアトリビュートはこの設定内容の対象となるDbContextを継承したコンテキストクラスのnameを指定します。

providerNameアトリビュートでは対象他なるデータベースサーバのデータプロバイダの名称を記述します。上のコードではMS SQL Serverを指定してます。

データベース プロバイダー名 備考
MS Sql Server System.Data.SqlClient http://msdn.microsoft.com/ja-jp/library/bb896309.aspx
MS Sql Server Compact 4.0 System.Data.SqlServerCe.4.0 http://msdn.microsoft.com/en-us/library/ms174044(v=SQL.110).aspx

そのほかの物についてはhttp://msdn.microsoft.com/en-us/data/dd363565.aspxを参照してください。

connectionStringにはデータプロバイダーごとに特有の接続文字列を記述します。上のコードでは認証はNT認証、接続するデータベースはEF1データベース、接続するサーバーはローカルの標準インスタンスということになります。接続文字列についてはMSDNライブラリの接続文字列の構文 (ADO.NET)などを参考にします。

以下はSQL Server Compact 4.0の例です。



  
    
  

また、SQL Server, SQL Server Compactで共通していますが、接続文字列に書かれたデータベースが存在しない場合には最初の動作時にそのデータベースを作成します。

コメントを残す