I have a number of applications that share the same data in the same database. To try and minimize redundancy of code the Data Access Layer is a shared project. This prevents each project from needing to re-code it's own data access, but this also creates a big pain point. When one team needs to update the data layer, all other teams need to pull in and test the changes to make sure that they haven't broken anything and this is a slow and painful process.
I have thought about the idea of removing the shared data layer and just having each team manage their own data layer but the problem is all teams still access the same database so if there are table changes the pain point is still there because every team needs to update their relevant code.
So my question is, how could I design our data and access layer such that many projects be driven off of the same data source, and minimize the pain of making changes to the database or the access layer?