DevForce 7.2.2是否适用于EF6 + Oracle ODAC Release 3驱动程序?

时间:2015-01-15 06:40:59

标签: devart devforce

我们的项目目前基于DevForce 7.2.2 + EF5 + Oracle ODAC Release 2。 自Cristmas日以来,Oracle提供了新的ODAC Release 3,它支持EF6,因此我们计划迁移到EF6。 我安装了新的ODAC驱动程序和EF6,成功添加了IdeaBlade.EntityModel.Edm.EF6和编译项目。 但是当我尝试删除edmx.tt文件并再次保存edmx时,错误显示:

正在运行转换:System.Exception:无法从文件加载MetadataWorkspace: C:\人力资源管理\分支机构\工作\客户端\干线\ william_EF6 \来源\ Infor.HRCM.BusinessObjectEF \ HRCMModel.edmx 这可能是由于加载过程中遇到的验证错误; 请检查EDMX验证错误。 找不到具有不变名称' Oracle.DataAccess.Client'的ADO.NET提供程序的实体框架提供程序。 确保提供商已在' entityFramework'中注册。应用程序配置文件的一部分。 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。    在IdeaBlade.VisualStudio.OM.CodeGenerator.Metadata.EdmxWrapper.ThrowException(String edmxFileName,IEnumerable 1 errors) at IdeaBlade.VisualStudio.OM.CodeGenerator.Metadata.EdmxWrapper.LoadFrom(String edmxFileName, IEnumerable 1& errors)    在IdeaBlade.VisualStudio.OM.CodeGenerator.BaseDomainModelTemplate.Generate()    在Microsoft.VisualStudio.TextTemplatingF6DEE480DF7B4F94A3D12E403704A2572EB9DB1E939B6073E8F11C8E668FEEA7B6005FF1359D9D2F5838491689A816AF3A6016F8F44D717349E05C0127639B54.GeneratedTextTransformation.TransformText(c)中:\ HRM \分支\工作\客户\树干\ william_EF6 \源\ Infor.HRCM.BusinessObjectEF \ HRCMModel.edmx.tt:管线9 C:\ HRM \分支\ work \ Client \ trunk \ william_EF6 \ Source \ Infor.HRCM.BusinessObjectEF \ HRCMModel.edmx.tt 9 1 Infor.HRCM.BusinessObjectEF

我创建了没有DevForce的新演示(只有EF6 + ODAC驱动程序),它可以工作。 以下是我的应用程序配置:

<?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" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <connectionStrings>
    <add name="HRCMContext" connectionString="metadata=res://*/HRCMModel.csdl|res://*/HRCMModel.ssdl|res://*/HRCMModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;data source=DEV12;password=hrm_trunk;persist security info=True;user id=HRM_TRUNK&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <oracle.unmanageddataaccess.client>
    <version number="*">
      <edmMappings>
        <edmNumberMapping>
          <add NETType="decimal" MinPrecision="1" MaxPrecision="19" DBType="Number" />
        </edmNumberMapping>
      </edmMappings>
    </version>
  </oracle.unmanageddataaccess.client>
  <entityFramework>
    <providers>
      <provider invariantName="Oracle.DataAccess.Client" type="Oracle.DataAccess.EntityFramework.EFOracleProviderServices,
                Oracle.DataAccess.EntityFramework,Version=6.121.2.0, 
                Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

1 个答案:

答案 0 :(得分:0)

EF6似乎以不同于EF5的方式加载/解析app.config信息,导致设计时出现DevForce问题。 EF6中的DevForce代码生成目前无法使用项目配置文件中的信息,因此找不到配置中的entityFramework信息。

您现在可以通过将entityFramework信息(包括configSection条目)添加到与devenv.exe位于同一文件夹中的devenv.exe.config文件来解决此问题。

我们希望在下一个DevForce版本中找到解决方法。