Сохранить объекты в базу данных? - PullRequest
1 голос
/ 13 мая 2010

До сих пор в моих приключениях по написанию .Net мне нужно было только сохранять информацию в файлы.Поэтому я использовал XmlSerializer и DataContractSerializer для сериализации приписанных классов в XML-файлы.Мой следующий проект, однако, требует, чтобы я сохранял и извлекал информацию из базы данных сервера SQL.Мне интересно, какие у меня есть варианты для этого.

Текущая версия приложения, которая не была создана мной, использует множество жестко закодированных команд SQL.Но теперь я пытаюсь избежать всего, что мне нужно для чтения или записи отдельных полей в базе данных или объектах.Я особенно хочу избегать большого количества жестко закодированного SQL в моем коде.Мне нравится, как классы сериализатора просто выясняют, как читать и писать файлы XML на основе атрибутов и / или открытых свойств класса.Есть ли что-то похожее для базы данных, а не для XML?

Ответы [ 6 ]

2 голосов
/ 13 мая 2010

Я полагаю, что вы имеете в виду Object Relational Mappers . Они предоставляют множество функций, в том числе простой объект CRUD сантехника.

Выезд:

Есть много других, но это поможет вам.

2 голосов
/ 13 мая 2010

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

Существует множество продуктов, самый известный из которых NHibernate , есть несколько конкурирующих продуктов, предлагаемых Microsoft в Linq 2 Sql и Entity Framework (вы должны использовать позже, но все используют первое, как это проще).

Вы можете увидеть хорошее (хотя я подозреваю, предвзятое) сравнение предложений ORM на http://ormbattle.net/

0 голосов
/ 13 мая 2010

Я согласен (и предпочитаю) предыдущие предложения использовать ORM. Просто чтобы убедиться, что у вас есть полное меню опций здесь еще один вариант. Если вы знакомы с представлением XML, (де) сериализацией и т. Д., Вы также можете изучить использование SQLXML. С учетом вышесказанного не следует использовать это, чтобы избежать правильного проектирования базы данных, хотя это может быть вполне разумным для некоторых решений.

0 голосов
/ 13 мая 2010

Я думаю, вы должны прочитать о Linq to SQL. Это позволит вам работать «в первую очередь» с классами, которые являются представлениями таблиц вашей базы данных и их отношений.

DataContext context = new DataContext();
var obj = context.Table1.Single(row => row.Id == 1234);
obj.Name = "Test1234";
context.SubmitChanges();

Это может быть хорошим местом для начала, чтобы узнать о Linq to SQL Надеюсь, это то, что вы ищете.

0 голосов
/ 13 мая 2010

В зависимости от проекта ORM, такой как NHibernate , может быть тем, что вы ищете.Что-то, где вы отображаете информацию своей базы данных в классы, а ORM заботится о вставках, удаляет и выбирает для вас без рукописного SQL.Это также позволяет выполнять миграцию в другую систему базы данных без необходимости переписывать.

Я говорю, что это зависит от проекта, потому что здесь играют роль другие вещи, такие как производительность и структура данных.

0 голосов
/ 13 мая 2010

Не существует универсального типа объекта при работе с базами данных. Только таблицы и поля. Комбинация из них может сделать объект, хотя. Лучше всего использовать хранимые процедуры, если вас интересует жестко запрограммированный SQL в клиентском коде.

Я также в основном имею в виду фактические типы полей в базе данных. ОРМ это отдельная история. Если вы хотите заглянуть в nHibernate, если вам нужен объектно-реляционный картограф, который может помочь с INSERT, SELECT и т. Д.

...