2009-08-24 51 views
1

我買了[SubSonicIgnore]一類:SubSonic 3.0.0.3 | SimpleRepository - SortBy [SubSonicIgnore]

[SubSonicIgnore] 
     public string Name 
     { 
      get 
      { 
       return (FirstName ?? string.Empty) + ((MiddleName ?? string.Empty).Length > 0 ? " " + MiddleName + " " : " ") + (SurName ?? string.Empty); 
      } 
     } 

whenver我跑我的測試:

[Test] 
     public void Can_Sort() 
     { 
      IUserRepository _repo = new SqlUserRepository(); 
      var users = _repo.GetUsers().OrderBy("Name"); 

它總是產生一個錯誤:

TestQueryableSorter.Can_Sort : FailedSystem.NotSupportedException: The member 'Name' is not supported 

我注意到它只在具有[SubSonicIgnore]的屬性上打破。這是一個錯誤還是設計?

我使用了C:\ Program Files \ Microsoft Visual Studio 9.0 \ Samples \ 1033 \ CSharpSamples \ LinqSamples \ DynamicQuery中的類。

回答

1

您試圖讓SubSonic通過您明確表示要忽略的列進行排序。這是設計的,因爲SubSonic沒有Name成員的概念(您告訴它忽略使用SubSonicIgnore的這個屬性),您不能在SubSonic查詢中進行排序,選擇或使用該屬性。 看你的代碼,你也許可以做以下代替:

[Test] 
public void Can_Sort() 
{ 
    IUserRepository _repo = new SqlUserRepository(); 
    var users = _repo.GetUsers().OrderBy("FirstNAme"); 
+0

我怎麼能告訴亞音速只能忽略,如果我推數據到數據庫/表? – 2009-08-24 14:44:17

+0

在你的例子中,你不能擁有什麼基本上是一個計算列,SubSonic不能把它變成一個SQL查詢,它不知道如何。我已經添加了一個示例,說明如何對我的答案進行排序。 – 2009-08-24 14:49:06

相關問題