4

私はコードファーストのEntity FrameworkでSQL Server Express組み込みデータベース(.mdf)を生成しようとしています。それはうまく動作していましたが、今は同じエラーが何度も繰り返されています。問題を特定できません。問題は、初期化時に発生し、それだけで永遠にハングアップし、IntelliTraceのを見れば、あなたはすべてのCSQL Server Expressのコードファーストオペレーティングシステムエラー2

「物理ファイルを開くことができません」を返すスロー/ catch文のループのいくつかの種類を見ることができます:\ GT \を"0:"このエラーのテキストを取得できませんでした理由: 1815 "ファイル" c:\ gt \ aspnetdb.mdf "をデータベース 'WikDb'として添付することはできません。 (System.Data.SqlClient.SqlException)

UPDATE 私はまた、直前になりました次のエラーを取得する「物理ファイルを開くことができません....」

カラム 'InvariantName'は一意に制限されています。値 'System.Data.SqlClient'は既に存在します。ここで

ENDのUPDATE

は私のapp.configを

<configuration> 
    <system.data> 
     <DbProviderFactories> 
     <remove invariant="System.Data.SqlServerCe.4.0" /> 
     <add name="Microsoft SQL Server Compact Data Provider 4.0" 
       invariant="System.Data.SqlServerCe.4.0" 
       description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
       type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0"/> 
     </DbProviderFactories> 
    </system.data> 
    <connectionStrings> 
     <add name="WikDb" 
      connectionString="data source=.\SQLEXPRESS;Integrated Security=True; 
         database=WikDb;AttachDBFilename=c:\gt\aspnetdb.mdf; 
         User Instance=True" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

そして、ここで私の初期化コード

Database.SetInitializer(new DbInitializer()); //DropCreateDatabaseAlways<WikDb> intializer 
Database.DefaultConnectionFactory.CreateConnection("WikDb"); 
WikDb db = new WikDb(); 
db.Database.Initialize(true); 

は任意の助けである

は、

ありがとう感謝
+1

オペレーティングシステムのエラー2は「ファイルが見つかりません」です。一般的な知識です。 –

+0

私はちょっと困惑しますが、私がコードネームEFで作業したことはありませんが、app.configにSQL Server Compact(またはSqlServerCe)への参照と接続文字列SQL Server Express用です。 EFの特徴かもしれませんが、通常は1つの*または*を選択します。 –

+0

私はこのDbProviderFactoryで以前は動作していたことを知っていますが、別のものを探して、SQLExpressで見つけました。私は同じエラーがあることを知っているが、私はまた、次の例外を取得する直前:列 'InvariantName'は一意に制限されています。 Value 'System.Data。SqlClient 'は既に存在します。 –

答えて

2

SQL Serverインスタンスが壊れているようです。これは、かなり頻繁に追加のインスタンスをインストールするときに発生する傾向があります.Expressバージョンを使用している場合は、フルバージョンのインストールと保守が簡単です(Googleと個人的な経験があると思われる場合:P)。場合は、その場合は、動作しているSQL Serverインスタンスを持つ別のマシン上でアプリケーションを実行するだろうかどうかを確認する最良の方法。 SSMS(SQL Server Management Studio)を使用してデータベースに接続できますか。そうでない場合は、SQL Serverをクリーンインストールしてみてください。

いくつかの詳細情報:

編集:私は、単一のデフォルトのインスタンス(SQLEXPRESSという名前の1)を実行している場合はSQL Server Expressは最高の作品ことがわかりました、他のすべてが私にトラブルを与えました、ただ私であるかもしれません。

+0

複数のインスタンスが存在する可能性があり、わかりません。私が言うことを忘れたのは、 "開くことができません"と言われていますが、ファイルがありません。コードはまずそれを生成すると仮定します。 –

+0

このコードスニペット(app.configを除く)は完璧に動作していましたが、すべての変更をキャンセルしても突然このエラーが表示され始めました。 –

+1

インストールしたSQL Serverインスタンスを確認するには、SQL Server Configuration Managerを開きます。 _ "SQL Server Services" _の中に、1つまたは複数のエントリが表示されます。_SQL Server(Name)_ここで、nameはインスタンスの名前です。 SQL Server Expressの既定のインスタンスは* SQLEXPRESS *です。実行中か、天気予報がインストールされているかどうかを確認してください。または、コマンドプロンプトを開き、インストールされているすべてのインスタンスのリストを表示するには* osql -L *と入力します。サーバーインスタンスが実行されていない場合、または複数のインスタンスがインストールされている場合は、すべてを削除してデフォルトのインスタンスを再インストールします。 –

関連する問題