2

例外が発生します

基盤となるプロバイダーがConnectionStringで失敗しました。

内部例外を除いて

キー'attachdbfilename'の値が無効です

Windows 7ホームプレミアム仮想マシンで、アプリケーションを展開およびデバッグしようとしています。

しかし、私の開発マシンでは、アプリケーションは問題なく起動するだけです。

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

<add name="AssetsLocalDBEntities" connectionString="metadata=res://*/AssetsLocalDB.csdl|res://*/AssetsLocalDB.ssdl|res://*/AssetsLocalDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(localdb)\v11.0;attachdbfilename=|DataDirectory|\AssetDatabase.mdf;initial catalog=AssetDBSource;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Steve Wellensは、このトピックで接続文字列にガベージが含まれていると述べています 。基になるプロバイダーがConnectionStringで失敗しました

それでも、Maxim Gueivandovが返信したように、これはEntityFrameworkのedmxデザイナーによって直接生成されるため、有効な接続文字列である必要があります。少なくとも、開発マシンで動作するので、有効だと思います。

また、別のトピック(Entity Framework-基礎となるプロバイダーがConnectionStringで失敗しました)では、受け入れられた答えは&quot;を削除することです。文字列はc#コードのリテラルであるため、それらを\ "に置き換えますが、接続文字列はまだxmlにあるため、&quot;を単純に置き換えることはできません。on-connectionstring

仮想マシンにインストールされている.NETバージョンは4.0.30319であり、MsSQL Server Express LocalDBは11.0.2318.0であるため、どちらも最新であると思います。

編集:「|DataDirectory|」を削除した場合 接続文字列から、開発マシンで次のエラーが発生します。

ファイル「AssetDatabase.mdf」をデータベース「AssetDBSource」として添付できません。

したがって、「initialcatalog=AssetDBSource」も削除します。

ファイルAssetDatabase.mdfの自動名前付きデータベースをアタッチしようとして失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、UNC共有にあります。

どこを見ればいいのかわからないからだと想像できますか?だから、私はそれにフルパス(C:.. \ AssetDatabase.mdf)を提供し、それは機能します。

したがって、残りの質問は、LocalDBで相対パスを機能させるにはどうすればよいですか?

4

1 に答える 1

3

ターゲットマシンには、.NET4用のUpdate4.0.2以降がインストールされていないと思います。4.0.30319バージョンはすべての.NET4ビルドで使用されているように見えるため、.NET4のバージョン番号は混乱を招く可能性があります。事実上、それはあなたのマシンがアップデート4.0.2を持っているという意味ではありません。

ターゲットマシンに.NET4Update 4.0.3(現在の最新の.NET 4アップデート)をインストールして、問題が解決するかどうかを確認できますか?

または、更新プログラムがインストールされていることを確認します。接続文字列を使用してLocalDBに接続するために使用する単純なアプリケーションを.NET 4で構築しSqlClient、エラーが発生した場合に備えてエラー情報を記録します。EFエラーメッセージはかなり一般的であり、基盤となるSqlClientプロバイダーから詳細なエラーを取得する方法がわかりません。

または、.NET4.5に移行することもできます。

于 2013-02-04T21:27:54.260 に答える