Существует ли инструмент ORM для C #, который может «черный ящик» базы данных? - PullRequest
3 голосов
/ 02 октября 2009

У меня есть куча POCO, которые я создал, для которых я хочу создать постоянный слой. Дело в том, что мне действительно все равно, как данные хранятся в SQL Server, я просто хочу, чтобы они хранились. Другими словами, я хочу сказать инструменту ORM: «Вот некоторые классы POCO, сохраните их». и не нужно ничего делать сверх этого. Есть ли какой-нибудь инструмент ORM для C #, который может это сделать? Я изо всех сил пытался заставить Fluent NHibernate работать, а Subsonic не поддерживает отношения, что делает такие вещи, как «Получить все комментарии для одного поста», довольно сложно. Он должен иметь возможность автоматически генерировать схему базы данных без необходимости устанавливать кучу атрибутов и еще много чего.

Ответы [ 5 ]

6 голосов
/ 02 октября 2009

Вы можете попробовать DataObjects.Net , но это не совсем то, что вы ищете. Прежде всего, его сущности не являются poco, вы должны наследовать их от определенного базового типа. Во-вторых, вы должны отметить поля, которые хотите сохранить, специальным атрибутом.

Так почему же тогда я рекомендую DataObjects? Потому что я думаю, что это полностью черная база данных. Вы просто делаете кучу объектов и просите ORM сохранить их.

  • Он автоматически генерирует схему базы данных в указанной РСУБД во время выполнения.
  • Вам не нужно вызывать методы, такие как .Save (), чтобы сохранить изменения, просто работайте как с обычными объектами.
  • Вам не нужно писать SQL-запросы - он полностью поддерживает LINQ.
  • Вам не нужно иметь дело со сценариями SQL, даже когда существующая база данных обновляется до следующей версии.
2 голосов
/ 02 октября 2009

Я лично использую Fluent NHibernate, и он делает для меня то, что вам нужно. Ну, почти. Есть такая вещь, как необходимость вручную указать ManyToMany, но вы не можете избежать этого. И если вы хотите создать хороший объект, вы должны сделать некоторые элементы приватными, что отключает автоматическое сопоставление этих элементов. Тем не менее, я изменил свой дизайн LOT и даже не думал о том, как изменилась моя БД (роскошь нового проекта, но ...).

Вы смотрели на Замок ActiveRecord? Вам действительно нужны настоящие POCO, или вы можете жить с атрибутами и .Save на объектах? Ну, я бы этого избежал, но это может сработать для вас.

1 голос
/ 02 октября 2009

Оформить Subsonics SimpleRepository . Создайте класс, создайте базу данных, дайте Subsonic строку подключения, и он обрабатывает все остальное. Острота.

0 голосов
/ 02 октября 2009

Посмотрите на постоянные объекты DevExpress eXpress

0 голосов
/ 02 октября 2009

Если вам все равно, как он хранится, то почему SQL Server? Как насчет couchDB http://couchdb.apache.org/docs/intro.html

...