Я искал простое решение для этого, стараясь изо всех сил склоняться к чему-то вроде NHibernate, но пока все, что я нашел, похоже, пытается решить немного другую проблему.Вот что я рассматриваю в своем текущем проекте:
У нас есть база данных IBM iSeries в качестве основного хранилища для стороннего программного пакета, используемого для нашего основного бизнеса (финансового учреждения).Часть того, что делает моя команда, - это написание приложений, которые каким-то образом отчитываются или отключают многие из этих данных.В прошлом мы вручную создавали соединения ADO .NET (кстати, мы используем .NET 3.5 и Visual Studio 2008) и вручную писали запросы и т. Д.
Если двигаться дальше, я быхотел бы упростить процесс получения данных оттуда для команды разработчиков.Вместо того, чтобы создавать соединения и запросы и все такое каждый раз, я бы предпочел, чтобы разработчик мог просто сделать что-то вроде этого:
var something = (from t in TableName select t);
И, в идеале, они просто получили бы некоторый IQueryable или IEnumerableсгенерированных объектов.Это будет сделано в новом доменном ядре, которое я создаю, где будут жить эти объекты, и приложения будут взаимодействовать с ним через уровень обслуживания запросов / ответов.
Несколько вещей, на которые следует обратить внимание:
- Объекты, которые соответствуют таблицам базы данных, должны быть сгенерированы один раз, и мы бы предпочли, чтобы они обновлялись вручную с течением времени.То есть, если столбцы / таблицы добавляются в базу данных, нам не нужно ничего делать.(Если некоторые будут удалены, конечно, он сломается, но это нормально.) Но если нам нужно использовать новый столбец, мы должны иметь возможность просто добавить его в необходимый класс (ы) без необходимости повторного генерированиявсе это.
- Все это должно быть только для SELECT.Мы не делаем полный DAL здесь, потому что мы не хотим иметь возможность что-либо сломать в базе данных (даже случайно).
- Нам не нужно никакого отображения между нашими объектами домена исгенерированные типы объектов.Домен едва покрывает часть данных, которые там находятся, большая часть которых нам никогда не понадобится, и мы бы просто со временем создавали карты многократного использования вручную.У меня уже есть логическое разделение для DAL, где мои классы «хранилища» возвращают доменные объекты, я просто ищу лучшую альтернативу ручному ADO для использования внутри классов хранилища.
Любые предложения?Кажется, что то, что я делаю, достаточно вне обычного спроса на инструменты / учебные пособия по DAL / ORM, так что я не смог ничего найти.Или, может быть, я просто упускаю из виду что-то очевидное?