1

すべてが私の開発ボックス (Windows 7 64 ビット) で正常に動作し、レコードを取得してレコードを保存できます。

Windows Server 2008 (32 ビット) マシンに展開すると、データを取得して正常に表示できます。問題は、次のいずれかの場合に発生します。

1) 保存してみてください:

System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.ArgumentException: The specified value is not an instance of type 'Edm.Decimal'
Parameter name: value
   at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateConstant(TypeUsage constantType, Object value)
   at System.Data.Mapping.Update.Internal.UpdateCompiler.GenerateValueExpression(EdmProperty property, PropagatorResult value)
   at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildPredicate(DbExpressionBinding target, PropagatorResult referenceRow, PropagatorResult current, TableChangeProcessor processor, Boolean& rowMustBeTouched)
   at System.Data.Mapping.Update.Internal.UpdateCompiler.BuildUpdateCommand(PropagatorResult oldRow, PropagatorResult newRow, TableChangeProcessor processor)
   at System.Data.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler compiler)
   --- End of inner exception stack trace ---
   at System.Data.Mapping.Update.Internal.TableChangeProcessor.CompileCommands(ChangeNode changeNode, UpdateCompiler compiler)
   at System.Data.Mapping.Update.Internal.UpdateTranslator.<ProduceDynamicCommands>d__0.MoveNext()
   at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
   at System.Data.Mapping.Update.Internal.UpdateCommandOrderer..ctor(IEnumerable`1 commands, UpdateTranslator translator)
   at System.Data.Mapping.Update.Internal.UpdateTranslator.ProduceCommands()
   at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
   at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   at System.Data.Entity.Internal.InternalContext.SaveChanges()
   --- End of inner exception stack trace ---
   at System.Data.Entity.Internal.InternalContext.SaveChanges()
   at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   at System.Data.Entity.DbContext.SaveChanges()
   at Dashboard.Data.Repository.RepositoryBase`2.OnCompleteSave()

2) または、シーケンス内の次の番号を取得しようとします。

System.InvalidOperationException: The specified cast from a materialized 'System.Decimal' type to the 'System.Int64' type is not valid.
   at System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal)
   at lambda_method(Closure , Shaper )
   at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
   at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at Dashboard.Data.DashboardDbContext.ExecuteScalar[TResult](String query, Object[] parameters) in c:\Builds\1\Exploration Archives\Dashboard (MAIN) (talus test)\Sources\Exploration Archives\Dashboard\Main\Dashboard.Data\Dashboard.contrib.cs:line 23
   at Dashboard.Data.Repository.RepositoryBase`2.GetNextIdFromSequence()

私を最も混乱させているのは、Windows Server 2008 マシンにデプロイした後、部分的に機能する (データを取得できる) のに、シーケンスから取得または保存しようとすると機能しなくなるという事実です。

これを引き起こしている可能性のあるアイデアはありますか?

4

2 に答える 2

2

問題が見つかりました。

ID 列の場合、.NET オブジェクトで data type を使用longし、対応する oracle data typeを使用していましたnumber。私のマシンではうまくいきました。この問題に関する他の調査に基づいて、oracle データ型を に変更してみましたnumber(19)。まだ行きません。

longサポートはせいぜい不安定なようです。.NET オブジェクトのデータ型をintに変更し、Oracle のデータ型も に変更する必要がありましintた。これはうまくいきました。

私を最も悩ませているのは、明らかにnumberandnumber(19)が 10 進データ型として認識され、 への縮小変換に問題がなかったことlongです。この問題は、保存しようとしたときにのみ発生し、 への非縮小変換longを行いましたdecimal。図に行きます。

于 2012-12-11T19:32:41.257 に答える