@ Адиль, это не ответ на ваш первоначальный вопрос, но я бы посоветовал вам пересмотреть свое решение по созданию собственного уровня доступа к данным. Вы замечаете, что хотите перейти в NHibernate: просто сделайте это сейчас.
ИМО, написание ORM - пустая трата времени, если у вас нет особых ограничений. Существует множество вариантов, на которые уже потрачены сотни часов усилий. Используйте это! LINQ2SQL, Entity Framework, NHibernate, Subsonic, LLBLGen - все хорошо, и есть еще кое-что.
Обратите внимание, что если вы бросите свой собственный, вы не сможете использовать доброту LINQ без особых усилий.
Что касается наслоения, старайтесь не сходить с ума: держите количество слоев под контролем и сконцентрируйтесь вместо этого на создании достойного интерфейса между ними, чтобы предотвратить утечку абстракций.
Я видел множество очень «шаблонных», красиво многослойных проектов, которые во всем мире заканчиваются логикой, а абстракции постоянства просачивались повсюду. Сохраняйте это простым!