J'ai des tables Utilisateurs, Widgets et Layouts. Les utilisateurs ont une relation plusieurs-à-plusieurs avec les widgets via les mises en page. Chaque mise en page possède un ID utilisateur et un ID de widget. Je veux supprimer une mise en page qui correspond à un identifiant utilisateur et un identifiant Widget spécifiques.SubSonic 3 ActiveRecord expression lambda partiellement ignorée lors de la suppression
En utilisant SubSonic 3 ActiveRecord J'écris:
Layout.Delete(x => x.UserID == user.id && x.WidgetID == id);
Cependant, SubSonic supprime tous les mises en page de widget pour l'utilisateur, ignorant apparemment la deuxième partie de la condition. Est-ce que je fais mal, ou est-ce un bug SubSonic? Si ce dernier, y a-t-il des solutions de contournement?
ajouté plus tard: je fixe temporairement dans Context.tt dans mon projet de sous-répertoire Modèles:
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;
}
Oui - s'il vous plaît ajouter cela comme un problème. Ne devrait pas se produire ... –
J'ai le même problème avec une recherche. var items = Personne.Find (x => x.ID == id && x.Name == myStringArray [0]); myStringArray est rempli! – Jon
Filed un nouveau numéro: http://github.com/subsonic/SubSonic-3.0/issues/#issue/55 – glebd