web-dev-qa-db-ja.com

Entity Framework Code FirstのSQL Server Express接続文字列

私はVisual Web Developer 2010 Expressで作業しており、Entity FrameworkのコードファーストCTPを使用しています。新しいSQL Server CEでこれを行うことはできますが、SQL Server Expressで動作する接続文字列を見つけることができません。

これは、SQL Server CEベータ版を使用して、正常に機能します(データベースはモデルの変更時に作成および再作成されます)。

<add name="TrempimModel"
     connectionString="data source=|DataDirectory|TrempimModel.sdf"
     providerName="System.Data.SqlServerCe.4.0" />

これは、aspnetdb接続文字列からコピーしたものです。

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

起動時に次のメッセージを表示します。

操作を完了できません。指定されたSqlConnectionは初期カタログを指定していません

では、SQL Server Expressでどのように機能させるのでしょうか?

38
GilShalit

ここでの接続文字列の問題は次のとおりです。

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

基本的に、接続する「サーバー」を定義しますが、notはファイル内のどのデータベースに接続するかを指定します。 また、SQL Server Expressデータベースファイルのファイル拡張子は.mdf.sdfではありません-SQL Server Compact Editionです)-これも考慮する必要があります! (はタイプミスでした、OPによるコメントによると)。

接続文字列に追加のdatabase=....(またはInitial Catalog=.....)を定義する必要があります。

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

その後、それはうまく動作するはずです。

より多くの背景と大量のサンプルについては、 ConnectionStrings Webサイトをご覧ください。

61
marc_s