【问题标题】:Entity Framework with EF6 Runtime Exception 'Member Mapping specified is not valid'具有 EF6 运行时异常“指定的成员映射无效”的实体框架
【发布时间】:2016-05-09 10:16:09
【问题描述】:

我刚刚迁移到 EF6,这就是正在发生的事情。 我已经完成了有关 stackoverflow 或 oracle 的任何帖子中建议的所有内容,因此我决定提出另一个问题。

1) 我的模型在一个单独的程序集中。 2)我已经完成了我应该做的一切来重新生成我的模型(删除了 .tt 文件并从数据库中刷新我的模型)。 3) 这样做之后,新的 EF 似乎太聪明了,并决定将我所有的 number(1) 字段创建为布尔值。 4)这会给我带来巨大的返工。 5) 我决定在我拥有模型的解决方案中的 web.config 中添加以下条目。

  <oracle.dataaccess.client>
    <settings>
      <add name="int16" value="edmmapping number(1,0)" />
      <add name="int16" value="edmmapping number(3,0)" />
      <add name="int16" value="edmmapping number(4,0)" />
      <add name="int32" value="edmmapping number(9,0)" />
      <add name="int64" value="edmmapping number(18,0)" />
    </settings>
  </oracle.dataaccess.client>

我刷新了我的模型,一切都很好。 6) 当我运行引用了我的模型组件的应用程序时,打开与 Oracle 数据库的连接时出现以下异常。

error 2019: Member Mapping specified is not valid. The type 'Edm.Int16[Nullable=True,DefaultValue=]' of member 'TRACKATTENDANCEFLAG' in type 'Model.FACILITY' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' of member 'TRACKATTENDANCEFLAG' in type 'Model.Store.FACILITY'.

7) 我在使用该模型的应用程序中添加了相同的条目,但没关系,我不断收到相同的异常。

8) 我没有使用托管驱动器。我正在使用 Oracle.DataAccess.Client。

9) Oracle.DataAccess.Client 版本 2.121.2.0 Oracle.DataAccess.EntityFramework 版本 6.121.2.0

有人有什么想法吗?我花了 20 多个小时试图弄清楚。我已经尝试了所有可能的组合。 Oracle 会让我生成我的模型,但在运行时针对确切的数据库失败了。

感谢您的帮助

【问题讨论】:

    标签: oracle asp.net-mvc-5 entity odp.net


    【解决方案1】:

    遇到了同样的问题并尝试了我找到的所有解决方案。唯一可行的方法是将以下代码添加到&lt;connectionStrings&gt;&lt;/connectionStrings&gt; 下的所有 Web.config 和 app.config 文件中。

    <oracle.manageddataaccess.client>
      <version number="*">
        <edmMappings>
          <edmNumberMapping>
            <add NETType="int16" MinPrecision="1" MaxPrecision="4" DBType="Number"/>
          </edmNumberMapping>
        </edmMappings>
      </version>
    </oracle.manageddataaccess.client>
    

    我的设置是:

    • EF6
    • Oracle ManagedDataAccess 客户端 4.121.2.0

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误信息。在我的情况下,我试图将 number(1,0) 列映射到布尔值,并且我正在使用 EDMX 文件。以前,该项目可以正常工作并且没有显示错误消息,但在安装了最新版本的 oracle 开发人员工具和 Visual Studio 2019 后,它开始显示此错误消息。该项目编译并运行良好,但将其添加到 web.config 也删除了错误消息。

      <oracle.manageddataaccess.client>
          <version number="*">
            <edmMappings>
              <edmMapping dataType="number">
                <add name="bool" precision="1" />
              </edmMapping>
            </edmMappings>
          </version>
        </oracle.manageddataaccess.client>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 2013-12-30
        相关资源
        最近更新 更多