IQ の Direct Interface を使用して、Oracle データベースから問題なく行をクエリできますが、単純な更新に問題があります。何か間違ったことをしているのか、それとも IQ が特定の Oracle テーブルを処理できないのかを知りたいです。
私のテーブルには NUMBER(22) の主キーがあり、エンティティの Int64 になります。クエリには 2 つの数値列があり、更新する列はエンティティの文字列である CHAR です。
これが私の更新です...
var c = Components.Single (c => c.Componentordernumber == 119137 && c.Componentorderversion == 1);
c.Circuitordernumber = "11043913";
SubmitChanges();
Components.Where (c => c.Componentordernumber == 119137 && c.Componentorderversion == 1).Dump();
これを LINQPad で実行すると、SubmitChange() で失敗します。(_InvokeMethodFast で) TargetInvocationException があります。内部例外は...
InvalidOperationException - The binary operator Equal is not defined for the types 'System.Int64' and 'System.Object'.
TargetSite: Expression.GetEqualityComparisonOperator (ExpressionType binaryType, String opName, Expression left, Expression right, Boolean liftToNull)
Stacke Trace:
at System.Linq.Expressions.Expression.GetEqualityComparisonOperator(ExpressionType binaryType, String opName, Expression left, Expression right, Boolean liftToNull)
at System.Linq.Expressions.Expression.Equal(Expression left, Expression right)
at IQToolkit.Data.EntityRef`1.QueryParent()
at IQToolkit.Data.EntityRef`1.get_Value()