@Adil, this is not an answer to your initial question, but I would advise you to reconsider your decision to minimize your own level of data access. Note that you want to upgrade to NHibernate: just do it now.
IMO, writing OPM is a waste of time unless you have special restrictions. There are many options, and hundreds of hours of effort have already poured into them. Use it! LINQ2SQL, Entity framework, NHibernate, Subsonic, LLBLGen - all is well, and there are more of them.
Please note that if you give up your own, you cannot use the good, which is LINQ, without much effort.
As for layers, try not to fade: keep the number of layers under control and focus instead on building a standing interface between them to protect against leakage of abstractions.
I saw a number of very βpatternedβ, beautifully multi-level projects that end up in logic everywhere, and abstractions of perseverance trickle down everywhere. Keep it simple!
source share