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 窗体或控制台应用程序),我们将其称为 Startup Project。

如果是这种情况,则不使用 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 回答