I am trying to write some art of "generic" data access library to access the data of my company's ERP Software, which is our main/core application where all our related data is managed.
I am a student worker and my boss & coworkers always come to me and ask to write small apps, to make any kind of stuff, from continue analysis of specific customers to automatic device measurement.
For all those apps, that like said can have the most different domains, I need to pull the data from the same DB, our ERP DB.
All of the data will be read only, since any change will be persisted back to the ERP DB.
So I thought to make a library where I just create a model that mirror the DB and expose some repositories returning the model classes or an interface implementing the same properties.
So my questions are:
Is this a good practice or should I create a data access layer for every app?
Are there maybe some patterns for this use case? I searched a lot but didn't find anything about read only scenarios, apart of using
This way the repos will return more information than required for the apps 99% of the time, but it will save me write duplicate code.
- So instead of making optimized queries with the requirements for the specific app and return a custom class with only required data, I am returning a lot of info, doing some logic and mapping it to whatever I need. I understand for huge datasets, highly accessed apps or very quick responsiveness this won't be a good idea, but for normal cases?