我有一个实体框架项目在我的机器上工作正常,但从网络运行时会出现问题。最近对项目的更改包括添加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,Version = 4.4.0.0,Culture = neutral,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>
有人可以指出我做错了吗?
答案 0 :(得分:20)
您的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的正确引用。
给它一个镜头,让我知道它是否有效。
答案 1 :(得分:10)
所有项目必须首先安装正确版本的EF,然后在App.config文件中检查以下内容,
<?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>
答案 2 :(得分:0)
我可以修复此问题安装:Visual Studio 2012的实体框架6工具&amp; 2013年 - http://www.microsoft.com/en-gb/download/confirmation.aspx?id=40762
此致 AM