Hi,
I work on a project that has about thirty tables to a size of about 1.5TB (SQL Server 2012/2014)
I have some views on these tables, including a master that I use to produce reports and analyzes, creaté in Excel/word with a custom solution.
On this main view "VMAIN" I have to apply numerous filters (tens) depending on configuration. Each configurations have its criteria.
Class {abstract abstract ACriteria filter A; Filter B abstract, abstract Filter C; ...}
Class Filter01: ACriteria filter {A = ...; Filter B = ..., Filter C = ...; ...}
in the second time I apply a grouping condition that can bring together a combination of several fields in a list of about thirty.
Calculations from this grouping is always the same.
To get there I generate all combinations of .NET classes:
abstract class AGrouping {float compute A, B Compute int, float Compute C, ...}
GroupA class: A AGrouping {string}
GroupB class: B} {string AGrouping
class GroupB: AGrouping {string} C
GroupA_B class: AGrouping {string A, string B}
GroupA_B class: AGrouping {string A, string C}
GroupA_B class: AGrouping {string B, C string}
GroupA_B class: AGrouping {string A, string B, C string}
I use DAPPER to perform queries. I create extensions to generate STRING which is the request, but that did not quite practical.
The slightest change of names or table involves passing in all STRING risk of forgetting.
The creation of new filters is also very complicated and dangerous.
I look at the side of EF (6/7), Hibernate but the performance is not very good and I felt limited me. Hibernate is even very complicated and the cost of integration seems too important. If I have to use the OVER clause by injecting myself formula is very complicated.
Other MircoOrm (petapoco, OrmLite) offer the same constraints as the current solution with Dapper.
I do not know your solution but do you see a way to implement a archtecture allowing me to operate in this way the database with your solution?
Thank you
PS: sorry for my bad english