【问题标题】:Upgrading EF to 6 with SQL Anywhere 17. Edmx giving invalid cast exception使用 SQL Anywhere 17 将 EF 升级到 6。Edmx 给出无效强制转换异常
【发布时间】:2015-08-04 06:55:59
【问题描述】:

我正在从 EF 5 升级到 EF 6。以前我使用的是 SQL Anywhere 12,现在我使用的是 SQL Anywhere 17。我升级了 EF 版本,升级了 SQL Anywhere 版本,但是当我构建时,我得到了这个错误

Unable to cast object of type 'Sap.Data.SQLAnywhere.SAProviderServices' to type 'System.Data.Common.DbProviderServices'.

我已按照本教程进行操作

http://dcx.sap.com/index.html#sqla170/en/html/37fb9e8558e94547b66156b9298be16f.html

我安装了 EF 6 所需的 SQL Anywhere 提供程序。它已集成到 VS。我可以使用服务器资源管理器建立连接。但是我的 edmx 不能正常工作。我删除了现有的 edmx 并创建了一个新的。但我仍然得到这个错误。如何解决此错误?

【问题讨论】:

    标签: entity-framework-5 entity-framework-6 sqlanywhere


    【解决方案1】:

    请注意,这是链接http://dcx.sap.com/index.html#sqla170/en/html/37fb9e8558e94547b66156b9298be16f.html上给出的XML

      <system.data>      
          <DbProviderFactories>
              <clear />
              <add name="SQL Anywhere 17 Data Provider" invariant="Sap.Data.SQLAnywhere" description=".Net Framework Data Provider for SQL Anywhere 17" type="Sap.Data.SQLAnywhere.SAFactory, Sap.Data.SQLAnywhere.EF6, Version=17.0.0.10094, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />
          </DbProviderFactories>
      </system.data>
      <entityFramework>
        <defaultConnectionFactory type="Sap.Data.SQLAnywhere.SAConnectionFactory, Sap.Data.SQLAnywhere.EF6, Version=17.0.0.10094, Culture=neutral, PublicKeyToken=f222fc4333e0d400">
        </defaultConnectionFactory>
        <providers>
            <provider invariantName="Sap.Data.SQLAnywhere" type="Sap.Data.SQLAnywhere.SAProviderServices, Sap.Data.SQLAnywhere.EF6, Version=17.0.0.10094, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />
        </providers>
      </entityFramework>
    

    就我而言,为了解决异常,我发现当您打开 *.edmx 文件并选择“从数据库更新模型...”时我必须将其更改为:

    https://ibb.co/kOhapv

    接下来,选择创建一个新连接:

    https://ibb.co/cq7Qpv

    然后,选择您的数据源:

    http://ibb.co/iXaOba

    执行这些步骤后,Visual Studio 将为您更新 app.config:

      <system.data>  
        <DbProviderFactories>
          <remove invariant="Sap.Data.SQLAnywhere" />
          <add name="SQL Anywhere 17 Data Provider" invariant="Sap.Data.SQLAnywhere" description=".Net Framework Data Provider for SQL Anywhere 17" type="Sap.Data.SQLAnywhere.SAFactory, Sap.Data.SQLAnywhere.EF6, Version=17.0.7.33824, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />
        </DbProviderFactories>
      </system.data>
      <entityFramework>
        <defaultConnectionFactory type="Sap.Data.SQLAnywhere.SAConnectionFactory, EntityFramework" />
        <providers>
          <provider invariantName="Sap.Data.SQLAnywhere" type="Sap.Data.SQLAnywhere.SAProviderServices, Sap.Data.SQLAnywhere.EF6, Version=17.0.7.33824, Culture=neutral, PublicKeyToken=f222fc4333e0d400" />
        </providers>
      </entityFramework>
    

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 2012-02-20
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      相关资源
      最近更新 更多