2017-06-19 4 views
2

Ich habe eine Abfrage erstellt, die mehrere Tabellen mit einem wo am Ende, die Tabellen zugeordnet werden, um ein benutzerdefiniertes Datamodell zugeordnet werden, wie in der Ormlite Readme empfohlen.Servicestack ormlite immer anonyme Objekt zurück, auch wenn nicht gefunden

using (var db = _connectionFactory.Open()) { 
      var q = db.From<PlayerMatch>() 
         .Join<PlayerMatch, Player>((x, y) => x.PlayerId == y.Id) 
         .Join<PlayerMatch, Team>((x, y) => x.TeamId == y.Id) 
         .Join<PlayerMatch, Match>((x, y) => x.MatchId == y.Id) 
         .Join<PlayerMatch, Goal>((x, y) => x.Id == y.PlayerMatchId) 
         .Where<PlayerMatch>(x => x.MatchId == matchId) 
         .Select<PlayerMatch, Player, Team, Match, Goal>((pm, p, t, m, g) => new { PlayerMatchId = pm.Id, PlayerId = p.Id, TeamId = t.Id, MatchId = m.Id, TotalGoalsScored = Sql.Count(g.Id) }); 


var result = await db.SelectAsync<PlayerMatchEndResult>(q); 
result.PrintDump(); 
return result; 

aber in meinen Tests fand ich, dass auch aus, obwohl die MatchID in der where-Klausel ist ein keiner eine bestehende, es ist immer noch mir folgende Datenmodell Rückkehr:

PlayerMatchEndResult 
{ 
    MatchId = 0 
    PlayerId = 0 
    PlayerMatchId = 0 
    TeamId = 0 
    TotalGoalsScored = 0 
} 

Wie Sie sehen können Da die entsprechenden Datensätze nicht gefunden werden konnten, werden alle Eigenschaften des anonymen Objekts auf 0 zurückgesetzt, wodurch ein ungültiges Objekt zurückgegeben wird.

Ich mag es nichts zurückgeben haben (null), so kann ich überprüfen, ob der Datensatz mit ormlite einem auf einer NULL-Prüfung statt vergleichen, wenn id == 0

Ist dies möglich, basierend existiert?

+2

Es ist wahrscheinlicher, dass Sie einen Fehler haben, der dazu führt, dass die Datenzuordnung fehlschlägt. Bitte [aktivieren Sie die Protokollierung] (http://docs.servicestack.net/logging), um zu sehen, welche Fehlermeldungen protokolliert werden. – mythz

+0

Hoppla, das wars, hatte bei der Join auf Goal-Tabelle einen Fehler. Ich habe es gelöst! Vielen Dank. –

Antwort

Verwandte Themen