1

プロジェクトの構造:

データベースを追加してそこにリポジトリを作成する必要があるモジュールフォルダがあります。他のモジュールやアセンブリでそれを使用できます。新規:ルートアプリケーションに構成ファイルを配置するという以前の証明済みの状態に変更しましたが、それでもエラーが発生します。この投稿は完全に編集されています。


データベースの場所:

場所:.... \ db \ db.sdf(販売のapp.configから2レベル上)

App.Configファイル

場所:modules \ ModuleX \(以前の)

新しい場所:Shell \(メインプロジェクト)

新しいバージョン :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="MyRecordzContext" connectionString="metadata=res://*...
  </connectionStrings>
</configuration>  

容疑者の2つのケース: providerName = "System.Data.EntityClient"

LocalDbConnectionFactory


エラー情報:

エラー行: TblMyRecord MyRecord = context.MyRecords.First(w => w.MyRecord == stMyRecord);

エラー: 「MyRecordzContext」という名前の接続文字列がアプリケーション構成ファイルに見つかりませんでした。


目標:アプリケーションを期待どおりに機能させるために、接続文字列、私のapp.configを変更する方法


ここでは、EF 5.0、SQL CE、Prism、WPF、MVVM、C#が使用されました


エラー :

エラー:「System.Windows.Application」の型初期化子が例外をスローしました。

アプリケーションの実行時に表示されます。

エラーはビルド前に発生しているようです。

スタックトレース :

PresentationFramework.dll!System.Windows.Application.Application()
Xz.Shell.exe!Xz.Shell.App.App()
Xz.Shell.exe!Xz.Shell.App.Main()
[Native to Managed Transition]
[Managed to Native Transition]
mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args)
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()
[Native to Managed Transition]
4

1 に答える 1

2

ModuleXはDALプロジェクトであり、スタートアッププロジェクトと呼ばれる別のプロジェクト(おそらくWeb、Windowsフォーム、またはコンソールアプリケーション)から参照されます。

この場合、DALプロジェクトのApp.Configファイルは使用されません。

2つの解決策があります:

  1. スタートアッププロジェクトで接続文字列を指定して、それを考慮に入れることができます。<connectionStrings>...</connectionString>これは、次の場所にタグを追加する必要があることを意味します。

    • web.config、スタートアッププロジェクトがWebアプリケーションの場合
    • それ以外の場合はapp.config(WPF、コンソールなど)。
  2. または、 machine.configファイルでこの接続文字列を定義すると、その特定のマシンで実行されているすべての.NETアプリケーションで使用できるようになります。

DALプロジェクトにある接続文字列は、実行時に使用されません。EFデザイナーだけが使っていると思います。

于 2012-10-14T15:22:35.390 に答える