protected virtual Func<PomonaContext, PomonaResponse> ResolveGetById(GetByIdRoute route, ResourceType resourceType) { var idProp = route.IdProperty; var idType = idProp.PropertyType; return pr => { var segmentValue = pr.Node.PathSegment.Parse(idType); var segmentExpression = Ex.Const(segmentValue, idType); var whereExpression = pr.Node.Parent .Query() .WhereEx(ex => ex.Apply(idProp.CreateGetterExpression) == segmentExpression); var queryableResult = whereExpression.WrapActionResult(QueryProjection.FirstOrDefault); return new PomonaResponse(pr, queryableResult); }; }
protected virtual Func <PomonaContext, PomonaResponse> ResolveGetById(GetByIdRoute route, ResourceType resourceType) { var idProp = route.IdProperty; var idType = idProp.PropertyType; return(pr => { var segmentValue = pr.Node.PathSegment.Parse(idType); var segmentExpression = Ex.Const(segmentValue, idType); var whereExpression = pr.Node.Parent .Query() .WhereEx(ex => ex.Apply(idProp.CreateGetterExpression) == segmentExpression); var queryableResult = whereExpression.WrapActionResult(QueryProjection.FirstOrDefault); return new PomonaResponse(pr, queryableResult); }); }