我刚刚迁移到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会让我生成我的模型但在运行时针对确切的数据库失败。
我感谢任何帮助
答案 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>
我的设置是: