MongoFramework
MongoFramework copied to clipboard
Custom LINQ engine
This kick starts the work for #87
Codecov Report
Merging #112 into master will decrease coverage by
4.67%
. The diff coverage is60.64%
.
@@ Coverage Diff @@
## master #112 +/- ##
==========================================
- Coverage 91.74% 87.07% -4.68%
==========================================
Files 71 78 +7
Lines 2496 2932 +436
Branches 294 348 +54
==========================================
+ Hits 2290 2553 +263
- Misses 134 286 +152
- Partials 72 93 +21
Impacted Files | Coverage Δ | |
---|---|---|
...ure/Mapping/Processors/PropertyMappingProcessor.cs | 84.21% <0%> (-5.27%) |
:arrow_down: |
...e/Linq/Translation/Translators/SelectTranslator.cs | 10.71% <10.71%> (ø) |
|
...rastructure/Linq/Translation/DefaultTranslators.cs | 100% <100%> (ø) |
|
...re/Linq/Translation/Translators/WhereTranslator.cs | 100% <100%> (ø) |
|
.../Linq/Translation/Translators/OrderByTranslator.cs | 16.66% <16.66%> (ø) |
|
...rk/Infrastructure/Linq/Translation/StageBuilder.cs | 45.45% <45.45%> (ø) |
|
...tructure/Linq/Translation/ExpressionTranslation.cs | 66.47% <66.47%> (ø) |
|
...frastructure/Linq/Translation/TranslationHelper.cs | 71.42% <71.42%> (ø) |
|
... and 5 more |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 80dd893...dceb2db. Read the comment docs.
Of note, attempt to support $lookup
through custom LINQ engine. This would effectively add support for basic joins between collections.
The process now will be to add the "low hanging fruit" queries like GroupBy etc, then write translators for GeoNear and Text search. Once done, we remove the pre-stage logic as it all will be handled by the new LINQ translator system. The updated GetExecutionModel
logic will no longer do any reflection and will retrieve the correct serializer by its own method.
At this point, it is just a matter of weeding out the existing tests to pass, then making sure that each component is adequately tested itself.
Once this is done, the next wave of changes will be writing an optimization layer for queries. This will be done directly with the BsonDocument
where it should be easier than with expressions.