we have a classical 3-tier-architecture application. Now we face a little problem and we don’t know the best way to handle it.
In the last layer (database-layer) we have a POCO-class, that gets filled with data from a database. In the top layer we have a MVC3 asp.net web-application. The MVC application would work best, if it could just read the POCO-class.
But as the GUI-layer cannot access the database-layer directly, it cannot get the exact same class.
What is the best way to get a POCO-class from the last layer to the top layer?
The actual issue is that your entities should not be defined in the data layer. Data layer, as well as any other layer in your app, might get completely rewritten one day, and you don’t want entities themselves to be tied to any of these layers.
In other words, define your entities in a separate project, and then reference it from all other projects:
The same goes for repository interfaces: if you are using a repository pattern to abstract your data access,
Entitiesproject is the one which should contain all repository interfaces, which can then be implemented by a specific DAL choice.