Search code examples
c#sqliteservicestack.net-coreormlite-servicestack

servicestack ormlite always returning anonymous object, even if not found


I have created a query that joins multiple tables with a where at the end, eventually the tables are mapped to a custom datamodel as recommended in the ormlite readme.

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;

However, in my tests i found out that even though the matchid in the where clause is a none existing one, it is still returning me the following datamodel:

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

As you can see, because it could not find the respective records, it defaults all properties of the anonymous object to 0, thus returning an invalid object.

I would like to have it return nothing (null) so i can check if the record exists based on a null check instead of a compare if id == 0.

Is this possible with ormlite?


Solution

  • Enabling logging as was advised by mythz solved my issue.