Как эффективно и легко хранить данные объектов в базе данных из ООП приложения? - PullRequest
0 голосов
/ 21 июля 2010

Я проектирую объектно-ориентированное приложение, используя C # с базой данных, в течение некоторого времени я создавал то же самое приложение, используя процедурный способ, которым я чувствую, что хранение данных в базе данных немного проще, используя простой оператор SQL.В моем приложении я хочу сохранить атрибут объектов в базе данных, например, для объекта элемента

    Class Item {
 private string itemId;

private string itemname;

private Invoice inv;  //assume Invoice object

//method

public bool storetodb() {

//..something like this
}
}

Проблема заключается в том, что я чувствую себя немного сложным при хранении и получении данных объекта в базу данных.Когда я искал на каком-то ресурсе, они также использовали подобный класс коллекции для сопоставления между объектом в приложении и реляционной базой данных.Даже я искал SO, но я не мог найти никакой связанной информации.Один источник, который я получил, был

  • http://www.codeproject.com/KB/database/AONETOOP.aspx ..... Автор использует коллекцию для хранения и извлечения данных
  • Я также слышал о технологии ORM, хотя никогдапопробовал.

Так что же является хорошей практикой для разработки приложений такого типа?Можете ли вы дать какие-либо ссылки, статьи, рекомендуемые книги или ответы для решения этих типов проблем.

Спасибо

Обновление

Кажется, инструменты ORM в основномnhibernate является наиболее перспективным из вашего предложения.Спасибо всем за помощь, я рассмотрю ORM

Ответы [ 7 ]

2 голосов
/ 21 июля 2010

Вы должны потратить некоторое время на изучение одного или двух ОРМ.Если вы работаете с .NET 4.0, вам следует попробовать новую реализацию Entity Framework.Еще одним широко используемым ORM является NHibernate, который является .NET-версией известного Java Hibernate ORM.Однако, с моей точки зрения, убедитесь, что вы инкапсулировали весь ORM в свой уровень доступа к данным (DAL), чтобы вы могли использовать собственный ADO.NET, если ORM когда-либо попадет в стену.

Другой вариант - EAV CR базы данных.Однако это не самый простой способ научиться жить с.(Я делал это более пяти лет.)

1 голос
/ 21 июля 2010

Я рекомендую LINQ to SQL от Microsoft для разработки Windows. Действительно легко учиться и начать.

LINQ to SQL: встроенный в язык запрос .NET для реляционных данных

Инструменты модели данных сущности ADO.NET (для простого проектирования в Visual Studio)

Я рекомендую Hibernate для разработки на Java.

Реляционная стойкость для Java и .NET

Читайте эту статью и в Википедии:

Объектно-реляционное отображение

1 голос
/ 21 июля 2010

"Google"?: -)

[n] hibernate кажется популярным.LINQtoSQL и EF (Entity Framework) также являются ORM и находятся «в стеке Microsoft» - например, поставляются в стандартной комплектации с VS.Существует также много других ORM, таких как Subsonic.

В целом, из-за "несоответствия импеданса" от традиционных систем SQL RDBM до "OO", большинство из перечисленных выше систем работают best со схемами, которые следуют определенным соглашениям, характерным для каждой модели.(Некоторые из них более «принимают» различные представления схемы, чем другие.)

0 голосов
/ 21 июля 2010

Как отметил Дэниел: db4o - это действительно естественный выбор, поскольку у вас нет ORM, вы просто определяете модель своего домена и сохраняете эти объекты в базе данных! Однако, если вы ограничены реляционными базами данных, то я бы пошел с Entity Framework в версии 4.

Исходя из этого, я бы порекомендовал шаблон репозитория, чтобы скрыть связанные с базой данные за ним.

0 голосов
/ 21 июля 2010

My 2c - db4o - просто и естественно ...

0 голосов
/ 21 июля 2010

Наилучшим методом для объектно-ориентированного и несоответствия импеданса реляционной базы данных является использование ORM.

Это не идеально, но поможет в большинстве случаев. Как отмечает @SquareCog, вы все равно должны помнить, что под капотом есть реляционная база данных, так как большинство ORM заканчивают тем, что выставляют это в той или иной степени (см. дырявая абстракция ).

Инструменты ORM помогут устранить несоответствие. Популярные в мире .NET:

  • nHibernate (самый старый из них, полнофункциональный)
  • Linq to Sql (устарело MS)
  • Entity Framework (новинка от MS)
0 голосов
/ 21 июля 2010

Купить: Скотт Амблер_с "Создание приложений, которые работают".старый, но верный.

Читайте об ORM (Object Rlelational Mappers).

Читайте о NHibernate и Microsoft Entity Framework - последний явно уступает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...