2009-07-14 6 views
0

사용자, 위젯 및 레이아웃 테이블이 있습니다. 사용자는 레이아웃을 통해 위젯과 다 대다 관계를 맺습니다. 각 레이아웃에는 UserID와 WidgetID가 있습니다. 특정 UserID 및 WidgetID와 일치하는 레이아웃을 삭제하고 싶습니다. 음속 3 액티브를 사용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

찾기와 같은 문제가 있습니다. 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