【发布时间】:2014-05-16 05:24:58
【问题描述】:
我正在将我公司的应用程序(现在运行在 SQL Server 和 Oracle 上)迁移到 ASP NET MVC 和实体框架以实现持久性。
基于 SQL Server 数据库单独创建我的实体模型我为 Oracle 创建一个 SSDL(对于 Oracle,我使用 DevArt dotConnect for Oracle Provider),我遇到了一些痛苦的问题。
我的表主键在 SQL Server 上是十进制(13,0)类型,在 Oracle 上是数字(13,0),但 Oracle 将其类型映射为 Int64,SQL Server 映射为十进制,但我需要 SQL Server 映射它到 Int64。
我在实体数据模型上手动进行这些修改并创建记录它工作正常,但是当我必须删除或更新一些记录时,我得到了这些错误:
指定的值不是“Edm.Decimal”类型的实例 参数名称:值
在 System.Data.Common.CommandTrees.DbConstantExpression..ctor(DbCommandTree commandTree, Object value, TypeUsage constantType)
在 System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(DbCommandTree commandTree,EdmProperty 属性,PropagatorResult 值)
在 System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateEqualityExpression(DbModificationCommandTree 命令树,EdmProperty 属性,PropagatorResult 值)
在 System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbModificationCommandTree commandTree,PropagatorResult referenceRow,PropagatorResult current,TableChangeProcessor 处理器,Boolean & rowMustBeTouched)
在 System.Data.Mapping.Update.Internal.UpdateCompiler.BuildDeleteCommand(PropagatorResult oldRow,TableChangeProcessor 处理器)
在 System.Data.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler 编译器)
有人可以帮助我吗?
为什么实体框架映射如此固定?它可以更灵活吗?
Ps.:我得到的错误,我怀疑是因为关联。
我有一个名为 Province 的实体和另一个名为 Country 的实体,我认为这些实体之间的关联导致更新和删除时出现问题。
问候,
道格拉斯·阿吉亚尔
【问题讨论】: