2009-08-24 5 views
1

bekam ich eine Klasse mit [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 ich meinen Test durchgeführt:

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

Es immer einen Fehler ergeben:

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

Ich merke, dass es nur auf jene Eigenschaften bricht, die [SubSonicIgnore] hat. Ist das ein Fehler oder ein Design?

Ich verwendete die Klasse von C: \ Programme \ Microsoft Visual Studio 9.0 \ Beispiele \ 1033 \ CSharpSamples \ LinqSamples \ DynamicQuery.

Antwort

1

Sie versuchen, SubSonic nach einer Spalte zu sortieren, die Sie auch explizit ignorieren. Dies ist beabsichtigt, da SubSonic kein Konzept für das Element Name hat (Sie sagen ihm, dass es diese Eigenschaft mit SubSonicIgnore ignorieren soll), das Sie nicht auswählen können, indem Sie es auswählen oder in Ihren SubSonic-Abfragen verwenden. an Ihrem Code suchen, könnte man wahrscheinlich die stattdessen folgendes tun:

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

Wie kann ich nur sagen, SubSonic zu ignorieren, wenn ich die Daten in die Datenbank/table bin drängen? –

+0

Sie können nicht, in Ihrem Beispiel haben Sie, was im Grunde eine berechnete Spalte ist, SubSonic kann dies nicht in eine SQL-Abfrage verwandeln es wird nicht wissen, wie. Ich habe ein Beispiel hinzugefügt, wie Sie meine Antwort sortieren können. –