8

我有一个实体框架项目,它在我的机器上运行良好,但从网络运行时会崩溃。最近对该项目的更改包括添加 Dynamic Linq dll (System.Linq.Dynamic)

当我从网络调试它时,VS 报告: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

内部异常是:“无法加载文件或程序集 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自的异常HRESULT: 0x80131040)":"EntityFramework,版本=4.4.0.0,文化=中性,PublicKeyToken=b77a5c561934e089"}

我尝试了通常的技巧:packages从项目的根目录中删除目录,从包管理器控制台卸载并重新安装,但无济于事。

我的 app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="LGFinance.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <connectionStrings>
    <add name="LGFinanceEntities" connectionString="metadata=res://*/Model.LGFinanceContext.csdl|res://*/Model.LGFinanceContext.ssdl|res://*/Model.LGFinanceContext.msl;provider=System.Data.SqlClient; provider connection string='data source=lightning;initial catalog=DLGDB;Integrated Security=true;Password=******;multipleactiveresultsets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <applicationSettings>
    <LGFinance.Properties.Settings>
      <setting name="Setting" serializeAs="String">
        <value />
      </setting>
    </LGFinance.Properties.Settings>
  </applicationSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

有人可以指出我做错了什么吗?

4

4 回答 4

22

您的 App.config 文件列出了 Entity Framework 5.0,并且您的代码中的某些项目仍保留 EF 4.4 并希望在 App.config 文件中找到它。

以下是最有可能发生的情况:您在使用 .NET 4.0 构建的项目上安装了 EF 5.0,这使得 EF 4.4 版本而不是 5.0 版本(因为 5.0 仅适用于 .NET 4.5)。如果您稍后尝试将项目升级到 .NET 4.5,您仍然会在该项目上使用 EF 4.4。这将要求您在该项目上再次重新安装 EF,才能正确引用 EF 5.0。

试一试,让我知道它是否有效。

于 2013-04-17T13:35:51.137 回答
10

所有项目都必须首先安装正确版本的 EF,然后在 App.config 文件中检查以下内容,

  1. 确保connectionStrings元素位于configSections元素之后。
  2. 确保启动元素位于connectionStrings元素之后。

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <configSections>
         <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   </configSections>
   <connectionStrings>
         <add name="SchedulingContext" connectionString="Data Source=XXX\SQL2008R2DEV;Initial Catalog=YYY;Persist Security Info=True;User ID=sa;Password=XXX"   providerName="System.Data.SqlClient"/>
   </connectionStrings>
   <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>       
 </configuration>
于 2013-09-26T03:47:22.243 回答
4

我尝试了所有,之后只是删除了以下提供程序,它对我有用

<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
于 2015-11-23T13:05:02.163 回答
0

我可以解决这个问题安装: Entity Framework 6 Tools for Visual Studio 2012 & 2013 - http://www.microsoft.com/en-gb/download/confirmation.aspx?id=40762

问候,上午

于 2014-10-11T13:02:48.190 回答