.net EF6抛出错误,从不同的机器调用exe';s共享文件夹

.net EF6抛出错误,从不同的机器调用exe';s共享文件夹,.net,sql-server,entity-framework-6,.net,Sql Server,Entity Framework 6,使用.NETFramework4.0和EF6.0开发了一个exe。它在安装了.Net framework 4.0和4.5完整版本的机器上运行良好。 但当我从不同机器的共享文件夹调用相同的exe时,它会抛出错误。这是因为配置中的entityframework标记 服务器计算机已安装.Net 4.5的共享文件夹。SharedFolder包含使用.Net 4.0开发的exe 如果用户在servermachine中打开sharedFolder的exe,则从clientmachine(已安装4.0)获取

使用.NETFramework4.0和EF6.0开发了一个exe。它在安装了.Net framework 4.0和4.5完整版本的机器上运行良好。

但当我从不同机器的共享文件夹调用相同的exe时,它会抛出错误。这是因为配置中的entityframework标记

服务器计算机已安装.Net 4.5的共享文件夹。SharedFolder包含使用.Net 4.0开发的exe

  • 如果用户在servermachine中打开sharedFolder的exe,则从clientmachine(已安装4.0)获取以下错误。

  • 当客户机和服务器机器具有4.5框架时,它可以正常工作

  • 直接在客户机(4.0)和服务器(4.5)中打开时工作 机器

错误

.Net Framework:4.0 实体框架:6.0 数据库:sql server

我的配置文件:

 <?xml version="1.0" encoding="utf-8"?>
<configuration>

  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>

  <connectionStrings>
    <add name="ERP-DB" connectionString="Data Source=testserver;Initial Catalog=db;user Id=**;Password=**" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

  <system.data>
    <DbProviderFactories>
      <add name="EF Caching Data Provider" invariant="EFCachingProvider" description="Caching Provider Wrapper" type="EFCachingProvider.EFCachingProviderFactory, EFCachingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
      <add name="EF Tracing Data Provider" invariant="EFTracingProvider" description="Tracing Provider Wrapper" type="EFTracingProvider.EFTracingProviderFactory, EFTracingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
      <add name="EF Generic Provider Wrapper" invariant="EFProviderWrapper" description="Generic Provider Wrapper" type="EFProviderWrapperToolkit.EFProviderWrapperFactory, EFProviderWrapperToolkit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
    </DbProviderFactories>
  </system.data>



</configuration>

听起来问题系统上安装了。在客户端PC上安装完整框架应该可以解决此问题

Microsoft.NET Framework 4(完整版)可在以下位置找到:

还有一个解决方案

移除下面的标签后,它工作了

  <entityFramework>
    <!--<defaultConnectionFactory type="System.Data.Entity.CrossCutting.SqlConnectionFactory, EntityFramework"/>--> 

    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>

伙计们,这个标签是强制性的吗

从我的机器(.Net 4.0安装),如果我从不同机器的(.Net 4.5.1安装)共享文件夹执行exe,当exe的配置有上述标记时,它会抛出错误。如果我删除了上面的标签,它就可以工作


如果我们在本地计算机(.Net 4.0)中执行相同的exe,它可以使用或不使用上述标记。

EF是复制到项目文件夹还是从GAC加载的?“问题系统”上加载的版本是否可能与其他版本不同?哦,这是什么类型的应用程序?WPF/winforms/web?@DavidKirkland,这是winform应用程序。是,EF文件在项目文件夹中可用。如果用户在服务器计算机中执行exe,则它正在运行。如果用户从另一台计算机(共享服务器文件夹)调用相同的exe,则会出现此错误(客户端计算机已安装.net framework 4.0)。因此,您是否从客户端计算机上的Windows共享运行应用程序?@DavidKirkland。是从windows共享调用exe。它适用于大多数客户和我们的测试环境。只有一个特定客户的客户端计算机出现此错误。但是,如果我们在服务器计算机(windows共享可用)中执行相同的exe,它就可以工作。machine.config是否会导致此问题?作为一个实验,我会尝试将该文件夹复制到客户端系统并在本地执行。如果它仍然不起作用,至少你已经排除了这个原因。。。此外,您还可以尝试在有问题的系统上启用Fusion日志记录,以防出现某种DLL冲突,并且无法正确加载某些内容。很高兴听到它正在工作!我不止一次被“客户档案”限制所困扰。
  <entityFramework>
    <!--<defaultConnectionFactory type="System.Data.Entity.CrossCutting.SqlConnectionFactory, EntityFramework"/>--> 

    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>