У меня есть таблицы Users, Widgets и Layouts. Пользователи имеют много-много отношений с виджетами через макеты. У каждого макета есть UserID и WidgetID. Я хочу удалить макет, который соответствует конкретному идентификатору пользователя и идентификатору WidgetID.
Используя SubSonic 3 ActiveRecord, я пишу:
Layout.Delete(x => x.UserID == user.id && x.WidgetID == id);
Однако SubSonic удаляет все макеты виджетов для пользователя, по-видимому, игнорируя вторую часть условия. Я делаю это неправильно, или это ошибка SubSonic? Если последнее, есть ли обходные пути?
Добавлено позже: я временно исправил это в Context.tt в подкаталоге Models моего проекта:
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;
}