Thomas, While I get the drift of you code, the abstraction of the data layer appears to be fairly wedded to the CMS architecture.
I have a code layer that, given a connection string, generates stored procedures for the base CRUD actions on a database as well as RUD actions for unique/foreign keys. It then gens a fully SqlParamater(ized), subclassed, ICloneable SqlCommand object for each one. As it creates them it stuffs them in a synchronized hashtable and either hands it back (WinFrom app) or stuffs it in the Application object (ASP.Net). My next natural step is an O-R mapping layer in lieu of seeing MS Objectspaces anytime soon. I've looked at a dozen .Net O-R Mapping layer products/projects/archtectures now and have done initial prototypes with both your approach and the DataSet-centric approach Ben has taken. I definitely agree MS dropped the ball here and I wish they would just get on with Objectspaces and spare us all the hassle. I tend be fairly agnostic other than having a desire to have the entire layer driven off an XSD repository (an DLL version of XSD would be handy...). That said, for less complex requirements I simply embed a DataRow in objects and for the collection object use an embedded DataSet. You seem to have been fairly thorough and thoughtful in your developing your architecture (I particularly like the Condition object [if one is going to use in-line SQL statements]). Your's general tack reminds me of Jeremy Miller's approach (http://www.csharptoday.com/content.asp?id=1770). Are you commercializing this? If not do you have any more detail you can share (an article perhaps), or if you are, perhaps a white paper on the general architecture. Joseph Healy Knowledge Is Equity Information Is Capital Data Has Liquidity You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.