Entity Framework 出现 EF6 运行时异常 'Member Mapping specified is not valid'
Entity Framework with EF6 Runtime Exception 'Member Mapping specified is not valid'
我刚刚迁移到 EF6,这就是正在发生的事情。
我已经完成了 Whosebug 或 oracle 上 post 中建议的所有内容,所以我决定再开一个问题。
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 允许我生成我的模型,但在 运行 时间内针对确切的数据库失败,这是非常错误的。
感谢任何帮助
遇到了同样的问题并尝试了我找到的所有解决方案。唯一有效的方法是将以下代码添加到我在 <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 客户端 4.121.2.0
我遇到了同样的错误消息的类似问题。在我的例子中,我试图将一个 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>
我刚刚迁移到 EF6,这就是正在发生的事情。 我已经完成了 Whosebug 或 oracle 上 post 中建议的所有内容,所以我决定再开一个问题。
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 允许我生成我的模型,但在 运行 时间内针对确切的数据库失败,这是非常错误的。
感谢任何帮助
遇到了同样的问题并尝试了我找到的所有解决方案。唯一有效的方法是将以下代码添加到我在 <connectionStrings></connectionStrings>
.
<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
我遇到了同样的错误消息的类似问题。在我的例子中,我试图将一个 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>