2009-07-14 30 views
0

我有表用戶,小部件和佈局。用戶通過Layouts與Widgets建立多對多的關係。每個佈局都有UserID和WidgetID。我想刪除一個匹配特定UserID和WidgetID的佈局。SubSonic 3 ActiveRecord lambda表達式在刪除時部分被忽略

使用亞音速3 ActiveRecord的我寫:

Layout.Delete(x => x.UserID == user.id && x.WidgetID == id); 

然而,亞音速刪除所有插件佈局對於用戶來說似乎忽略條件的第二部分。我做錯了,還是這是一個亞音速錯誤?如果是後者,是否有任何解決方法?

後來補充:我暫時固定它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; 
    } 
+1

是 - 請在此添加爲一個問題。不應該發生... – 2009-07-14 18:56:56

+0

我有一個查找相同的問題。 var items = Person.Find(x => x.ID == id && x.Name == myStringArray [0]); myStringArray被填充! – Jon 2009-07-15 09:22:04

回答

1

好像亞音速到我的錯誤。你應該將其報告給github

同時此代碼可能解決該問題:

Layout layout = Layout.SingleOrDefault(x => x.UserID == user.id && x.WidgetID == id); 
layout.Delete();