2009-07-14 6 views
0

私はテーブルのユーザー、ウィジェット、レイアウトを持っています。ユーザーは、レイアウトを介してウィジェットと多対多の関係を持っています。各レイアウトにはUserIDとWidgetIDがあります。特定のUserIDとWidgetIDに一致するレイアウトを削除したい亜音速3 ActiveRecordの私が書く使用SubSonic 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

はい - 問題としてこれを追加してください。起こってはいけない... –

+0

私はFindで同じ問題を抱えています。 var items = Person.Find(x => x.ID == id && x.Name == myStringArray [0]); myStringArrayに値が設定されます。 – Jon

+0

新しい問題が報告されました:http://github.com/subsonic/SubSonic-3.0/issues/#issue/55 – glebd

答えて

1

は私には亜音速のバグのように思えます。あなたは、このコードは、問題を回避する可能性がある一方でgithub

に報告しなければならない:

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

あなたの回避策はうまくいくようです。 – glebd

関連する問題