EF通用DAL程序集中的连接字符串

时间:2012-10-14 14:57:51

标签: c# entity-framework sql-server-ce prism entity-framework-5

项目结构:

有一个模块文件夹,我需要添加数据库并将存储库放在那里, 其他模块和组件可以使用它。 新增内容:将其更改为以前证明将配置文件放在根应用程序中的状态, 仍然有错误。 这篇文章完全被编辑。


数据库位置:

位置:.... \ db \ db.sdf(卖出的app.config上面2级)

App.Config文件

location: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 =&#34; System.Data.EntityClient&#34;

LocalDbConnectionFactory


错误信息:

错误行:             TblMyRecord MyRecord = context.MyRecords.First(w =&gt; w.MyRecord == stMyRecord);

错误:     没有名为&#39; MyRecordzContext&#39;的连接字符串可以在应用程序配置文件中找到。


目标:如何更改connectionstring,我的app.config以使应用程序按预期工作


这里使用了EF 5.0,SQL CE,Prism,WPF,MVVM,C#


错误:

错误:     &#39; System.Windows.Application&#39;的类型初始值设定项。抛出一个例外。

在应用程序运行时出现。

错误似乎在任何构建之前。

堆栈追踪:

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]

1 个答案:

答案 0 :(得分:2)

这是我的预感:ModuleX是DAL项目,它是从我们称之为启动项目的另一个项目(可能是Web,Windows窗体或控制台应用程序)引用的。

如果是这种情况,则不使用DAL项目中的App.Config文件。

有两种解决方案:

  1. 您可以在启动项目中指定连接字符串,以便将其考虑在内。这意味着您需要在以下位置添加<connectionStrings>...</connectionString>标记:

    • web.config,如果启动项目是Web应用程序
    • app.config,否则(例如WPF,控制台)。
  2. 或者,您可以在machine.config文件中定义此连接字符串,这将使其可用于在该特定计算机上运行的任何.NET应用程序。

  3. 在运行时不使用DAL项目中的连接字符串。我认为它仅供EF设计师使用。