In response to lucaminudel's suggestion,
I decided to share my user experience thus far:
1. Why don't the output of all the projects complile into a single bin directory?
That way, all the necessary assemblies would live in a single directory and no manual copying of files would be necessary.
All that needs to be done is simply go to each project's properties, choose the Build tab on the left, and in the "Output path" at the bottom enter something like ..\bin\ so that all projects put their output in a single location.
2. There are some class hierarchies that i think are a little problematic. Now, i'm no object oriented guru, but maybe a little change can save a lot of typing here. For example, the classes that implement the IDataProvider<T>, like ProductDataProvider,
ShipperDataProvider etc. could benefit from having a generic base class (DataProviderBae perhaps) that implments some of the methods of these classes. This way there would be no code repetition and much less typing would be required, let alone all the troubles
that come with code duplication.
3. Remarks in the code would be nice, as it would make this wonderfull project really accessible to anyone. As it is atm, it's really pretty easy to follow, but when it grows over time, it will be difficult to comprehend it.
4. Just a silly question this one... Why aren't you guys using DataSets? Is there something wrong with them? I think that their performance improved in ver 2.0 of the framework.
How do you create classes that are contained in other classes,
for example, I was trying to write the code for ProductDataProvider that among other things, creates Product entities. Now, this Product entity contains contains a ProductCategory entity. When I was trying to implement the method BuildDataObjectFromRawData
of the class ProductDataProvider, I didn't know how to create it :) Is there a pattern for building objects that represent related tables in the database, or do I need to write ugly code that does it?
Thank you all