Подход, который вы обсуждаете, многими считается хорошим, включая меня! Изучение этого подхода потребует некоторых усилий, но не позволяйте этому оттолкнуть вас!
А как насчет простого небольшого проекта с LINQ to SQL ? Возможно, найдите хороший справочный проект на коде Google и изучите, как другие работали с ним.
Это простой инструмент, который позволит вам ознакомиться с некоторыми проблемами, возникающими при сопоставлении объектов с базами данных.
После этого вы сможете почувствовать это и решить, стоит ли это кривой обучения.
Появятся новые концепции для понимания и экспериментов с такими вещами, как:
- Единица работы : Когда вы выполняете Сохранить, Удалить и т. Д., ORM имеет тенденцию не делать это немедленно, в то время как DAL на основе набора записей будет. Это может быть удивительно, поэтому вам нужно немного узнать об этом. Прочтите шаблон Единица работы , чтобы понять это.
- Массовые операции - проблема с OR / M. Считыватель данных может эффективно перебирать тысячи строк, но с ORM вы должны быть осторожны при работе с большими пакетами объектов. Опять один, чтобы читать дальше.
- Ассоциации кажутся великолепными, когда могут делать такие вещи, как
customer.Orders.Count
, но они также являются причиной многих проблем. Вам нужно будет найти некоторые безопасные методы, которым нужно следовать при работе с ассоциациями.
... чтобы назвать несколько.
Для начала, не беспокойтесь о наследовании и прочем, просто начните с простых и имейте простые сущности, которые отображаются в таблицы.
Попробуйте использовать их так же, как и существующий DAL. Тогда начните экспериментировать с ассоциациями.
Тогда, возможно, попробуйте добавить больше поведения в ваши сущности. Если вам это нравится, и вы чувствуете, что вам нужно больше возможностей, попробуйте более функциональный ORM, например Lightspeed или NHibernate .
Надеюсь, это поможет!