I know there are a lot of threads here already on the repository pattern but somehow I feel my question is a little different. Maybe because yesterday was the first time I heard of the word POCO.
My question is this–usually, I have add and save methods in my business entities. Say I am writing a Q/A site, and I have the following entities: questions, answers, and comments. If I wanted to use the repository pattern, I basically need to keep only the properties in my business entities (example, Question), and move my operations to the repository class (example, QuestionRepository), right? If this is true, does POCO mean a business entity with just the properties?
I’m using Entity Framework 4.0, which created my entities in the edmx code behind. If I wanted to use the repository pattern with this, there is no need to write my own business entities (Question, Answer, etc) since they are already generated by EF, right? All I’d need is the Repository to do CRUD? And I’ll be having three repositories for this example, one for each entity?
Your POCO objects would still have methods on them for operations, but those operations would pertain to the business concerns of the entity not the persistence concerns(CRUD). If there are no business operations on your entites, then yes they will be just properties.
You wouldn’t need to write your pocos from scratch if you are generating them but you may want to extend them with partial classes for business operations and non-persistent or calculated properties.
You could have a single repository class or a repository for each entity.