2009-11-05 117 views
5

我遷移我公司的aplication到ASP NET MVC和Entity Framework持久性(即現今在SQL Server和Oracle運行)。實體框架 - 映射十進制(13,0)的問題

創建一個基於SQL Server數據庫Ë我實體模型分別創建爲Oracle SSDL(對於Oracle我用DevArt dotConnect爲甲骨文提供者),我得到一些痛苦的煩惱。

我的表主鍵在SQL Server上是十進制類型(13,0),在Oracle上是數字(13,0),但是Oracle映射到Int64和SQL Server類型爲十進制,但我需要SQL Server將其映射到Int64。

我這些修改手動進行的實體數據模型和創建記錄它工作正常,但是當我不得不刪除或更新一些記錄我這些錯誤:

指定的值不是類型的實例「 Edm.Decimal」 參數名:價值

at System.Data.Common.CommandTrees.DbConstantExpression..ctor(DbCommandTree commandTree, Object value, TypeUsage constantType)
at System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(DbCommandTree commandTree, EdmProperty property, PropagatorResult value)
at System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateEqualityExpression(DbModificationCommandTree commandTree, EdmProperty property, PropagatorResult value)
at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbModificationCommandTree commandTree, PropagatorResult referenceRow, PropagatorResult current, TableChangeProcessor processor, Boolean& rowMustBeTouched)
at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildDeleteCommand(PropagatorResult oldRow, TableChangeProcessor processor)
at System.Data.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler compiler)

有人能幫助我嗎?

爲什麼實體框架的映射是如此固定的嗎?它可以更靈活?

詩:我得到了錯誤,我懷疑是因爲關聯。

我有一個實體命名爲省,另一個名爲國家,我認爲這些實體之間的關聯是造成在更新的問題,並刪除。

問候,

道格拉斯·阿吉亞爾

回答

2

這可能會或可能不會幫助你,但我從做同樣的事情了同樣的錯誤。所以我編輯了概念模型並將主鍵字段從Int32更改爲Decimal。到目前爲止,似乎有固定的東西。我仍然需要再次對Sql Server進行測試,並確保它沒有破壞它。

0

我得到的錯誤「指定的值的類型不是‘Edm.Decimal’參數名的一個實例:值」當你在你的問題張貼。我已將默認數據類型從Decimal更改爲Int32,因爲這更好地反映了真正的鍵入。當我第一次遇到這個錯誤時,我回滾了類型更改,並且仍然發生異常,但它稍微改變了一點,但導致進一步挖掘。底線,在我的場景中,我們期待通過Before Insert指令在持續期間填充PK的觸發器。問題在於由EF構建的域類將PK設置爲0,因此觸發從不觸發,因爲傳入的PK不爲空。當然EF不會讓你設置實體PK爲空。也許這會在未來幫助其他人。