我可以使用 IQ 的直接接口从 Oracle 数据库中很好地查询行,但是在进行简单更新时遇到了麻烦。我想知道我是否做错了什么,或者 IQ 是否无法处理我的特定 Oracle 表。
我的表有一个主键 NUMBER(22),这导致实体的 Int64。该查询有两个数字列,我正在更新的列是一个 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() 处失败。有一个 TargetInvocationException(在 _InvokeMethodFast 处)。内在的例外是......
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()