Je peux interroger les lignes d'une base de données Oracle avec l'interface directe d'IQ, mais j'ai des problèmes avec une simple mise à jour. J'aimerais savoir si je fais quelque chose de mal, ou si IQ ne peut pas gérer ma table Oracle particulière.
Ma table a une clé primaire de NUMBER(22), ce qui se traduit par Int64 pour l'entité. La requête a deux colonnes numériques, et la colonne que je mets à jour est de type CHAR, qui est une chaîne de caractères dans l'entité.
Voici ma mise à jour...
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();
Quand je lance cela dans LINQPad, cela échoue à SubmitChange(). Il y a une TargetInvocationException (à _InvokeMethodFast). Et l'exception interne est...
InvalidOperationException - L'opérateur binaire Eq ual n'est pas défini pour les types 'System.Int64' et '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()