具有EF6运行时异常的实体框架'指定的成员映射无效'

时间:2016-02-01 03:08:50

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

我刚刚迁移到EF6,现在正在发生这种情况。 我已经在stackoverflow或oracle上的任何帖子中完成了所有建议,所以我决定打开另一个问题。

1)我的模型处于一个单独的程序集中。 2)我已经做了我应该做的所有事情来重新生成我的模型(删除.tt文件并从DB刷新我的模型)。 3)执行此操作后,新的EF似乎太聪明了,并决定将所有数字(1)字段创建为布尔值。 4)这会给我带来巨大的改变。 5)我决定在我拥有Model的解决方案中将以下条目添加到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会让我生成我的模型但在运行时针对确切的数据库失败。

我感谢任何帮助

1 个答案:

答案 0 :(得分:7)

有同样的问题并尝试了我发现的所有解决方案。唯一有效的方法是将以下代码添加到<connectionStrings></connectionStrings>下的所有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 Client 4.121.2.0