2016-03-05 17 views
0

在我的lightswitch應用程序中,我有一個名爲「Transactions」的表。該表有一個名爲「所有者」的列。所有者列包含以逗號分隔的用戶名,例如「username1,username2,username3」。在過濾交易記錄時,我只想顯示當前用戶是其中一個所有者的記錄。在過濾數據源時,出現錯誤「名爲'p__linq__0'的參數已經存在」(LightSwitch)

爲此目的,我用他以下代碼。

partial void Transactions_Filter(ref Expression<Func<Transaction, bool>> filter) 
    { 
     filter = e => e.owners.Contains(this.Application.User.Name); 
    } 

,但我得到一個錯誤,「名爲‘p__linq__0’的參數已存在的參數集合中的參數名稱必須是參數集合中的唯一參數名:參數」

任何建議來解決錯誤?

+0

您是否在使用LightSwitch的MySQL數據庫? –

+0

我正在使用MS SQL。 – Moh

+0

在這種情況下,假設您在過濾器執行時看到錯誤,我將通過使用內置分析器中的SQL(如果您使用完整版本)或免費提供的[Express Profiler](https)來檢查生成的SQL查詢://expressprofiler.codeplex.com)。如果您可以發佈生成的SQL,這可能有助於提供問題原因的線索。 –

回答

0

您是否使用this.Application.User.Name作爲Filter方法之前編譯的其他方法中的參數?

另外,我認爲你應該使用子表保存用戶名,而不是將所有內容放在列中。在lightswitch中,如果你設計好數據庫,你將會有很好的應用。

+0

我認爲在_filter()函數中,我可以使用==,<=, > =等運算符,並且類似於這些運算符。也許_filter()函數不支持「like」或「contain」。我最終創建了一個查詢並使用_PreprocessQuery()函數。 – Moh

+0

我不這麼認爲。 Fitler是一個布爾表達式,所以你可以使用任何linq布爾方法來構建它。錯誤消息清楚地表明原因來自SQL查詢中的參數。你有2個或更多的方法在你的代碼中被命名爲Transactions_Filter? – Linh

相關問題