gpt4 book ai didi

c# - 无法使用 LINQPad 4 更新行

转载 作者:行者123 更新时间:2023-11-30 20:59:31 28 4
gpt4 key购买 nike

我可以使用 IQ 的直接接口(interface)从 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()

最佳答案

我在删除行时遇到了同样的问题。我通过将值为 null 的所有可为 null 的长字段设置为非 null 值(例如 0L)找到了解决方案。

为了简化这一点,我写了一个简短的扩展方法 PatchForDelete(见下文)并像这样使用它:

var testUsers = Users.Where (a => a.login.StartsWith("test")); 
testUsers.Dump();

foreach (var user in testUsers) {
MyExtensions.PatchForDelete(user);
AsdBenutzers.DeleteOnSubmit(user);
}
SubmitChanges();

问候,沃尔特

//
// Patch for Bug in IQ-Driver
//
// If each nullable long field which is null ist set to 0L
// DeleteOnSubmit() works!!
//
public static void PatchForDelete(object entity) {
var fields = entity.GetType().GetFields();

foreach (var field in fields) {
if (field.FieldType == typeof(long?)) {
var v = field.GetValue(entity);
if (v == null) {
field.SetValue(entity, 0L);
}
}
}
}

关于c# - 无法使用 LINQPad 4 更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480826/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com