我有表用户、小部件和布局。用户通过布局与小部件建立多对多关系。每个 Layout 都有 UserID 和 WidgetID。我想删除与特定 UserID 和 WidgetID 匹配的布局。
使用 SubSonic 3 ActiveRecord 我写:
Layout.Delete(x => x.UserID == user.id && x.WidgetID == id);
但是,SubSonic 删除了用户的所有小部件布局,似乎忽略了条件的第二部分。我做错了吗,或者这是一个 SubSonic 错误?如果是后者,是否有任何解决方法?
稍后添加:我在项目的 Models 子目录中的 Context.tt 中临时修复了它:
diff --git a/Models/Context.tt b/Models/Context.tt
index ee64200..dd47510 100644
--- a/Models/Context.tt
+++ b/Models/Context.tt
@@ -162,8 +162,8 @@ namespace <#=Namespace#>
LambdaExpression lamda = column;
SqlQuery result = new Delete<T>(this.Provider);
result = result.From<T>();
- SubSonic.Query.Constraint c = lamda.ParseConstraint();
- result.Constraints.Add(c);
+ var q = new QueryVisitor();
+ result.Constraints.AddRange(q.GetConstraints(lamda));
return result;
}