实体框架 - 映射十进制(13,0)问题

Dou*_*iar 5 mapping entity-framework

我正在将我公司的应用程序(现在运行在SQL Server和Oracle上)迁移到ASP NET MVC和实体框架以实现持久性.

分别创建基于SQL Server数据库e的实体模型我为Oracle创建了一个SSDL(对于Oracle我使用DevArt dotConnect for Oracle Provider),我遇到了一些痛苦的麻烦.

我的表主键在SQL Server上是十进制类型(13,0),在Oracle上是数字(13,0)但是Oracle将它的类型映射到Int64和SQL Server到十进制,但我需要SQL Server将它映射到Int64 .

我在实体数据模型上手动进行这些修改,并且对于创建记录,它工作正常,但是当我必须删除或更新某些记录时,我收到了以下错误:

指定的值不是'Edm.Decimal'类型的实例参数名称:value

在System.Data.Common.CommandTrees.DbConstantExpression..ctor(DbCommandTree commandTree,Object value,TypeUsage constantType)
处于System的System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(DbCommandTree commandTree,EdmProperty属性,PropagatorResult值)
.
System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbModificationCommandTree commandTree,PropagatorResult referenceRow,PropagatorResult current,TableChangeProcessor processor,Boolean&rowMustBeTouched )中的Data.Mapping.Update.Internal.UpdateCompiler.GenerateEqualityExpression(DbModificationCommandTree commandTree,EdmProperty属性,PropagatorResult值)) System.Data.Mapping.Update.Update.Update.Update.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode,UpdateCompiler编译器)
中的System.Data.Mapping.Update.Internal.UpdateCompiler.BuildDeleteCommand(PropagatorResult oldRow,TableChangeProcessor处理器
)

有人可以帮帮我吗?

为什么实体框架映射如此固定?它可以更灵活吗?

Ps.:我得到的错误,我怀疑是因为一个关联.

我有一个名为省的实体和另一个名为Country的实体,我认为这些实体之间的关联在更新和删除时导致了问题.

问候,

Douglas Aguiar

Bra*_*itz 2

这可能对你有帮助,也可能没有帮助,但我在做同样的事情时也犯了同样的错误。因此,我编辑了概念模型,并将主键字段从 Int32 更改为 Decimal。到目前为止,事情似乎已经解决了。我仍然需要再次针对 Sql Server 进行测试,并确保这不会破坏它。