Как сериализовать пользовательские данные из базы данных? - PullRequest
0 голосов
/ 04 июня 2009

У меня есть такая таблица:

ID  Name        Key     Value
1   Mydata1     Mail        myval1
1   Mydata1     Name        myval2
1   Mydata1     Nick        myval3
1   Yourdata    key2        myval4

и такой класс:

[Serializable]
public class Mydata
{
    public string Mail{get;set;}
    public string Name{get;set;}
    public string Nick{get;set;}
}

Я извлекаю из таблицы данных где Name = 'MyData1' в списке.

Как сериализовать эти данные в моем классе. Спасибо!

Ответы [ 2 ]

1 голос
/ 04 июня 2009

Вы должны изучить LINQ to SQL, LINQ to Entities, NHibernate и т. Д. Это OR Mappers или Object / Relational Mappers. Они предназначены для запроса вашей базы данных и возврата сериализованных объектов из вашего домена. Они могут значительно уменьшить количество усилий, необходимых для создания приложения с объектами, которые сохраняются и извлекаются с сервера базы данных.

Обратите внимание, что для Linq to SQL требуется SQL Server, а два других можно использовать с любой базой данных.

0 голосов
/ 04 июня 2009

Если у вас уже есть класс, вы ищете поддержку «POCO» в ORM.

например. Entities Framework v4 делает это. Подробнее см. . Я понимаю, что nHibernate имеет такую ​​поддержку сегодня.

В качестве альтернативы на уровне доступа к данным вы можете выполнить преобразование на уровне доступа к данным (DTO == Объект передачи данных ) с помощью устройства чтения данных:

var rs = dbCmd.ExecuteReader();
var results = new List<MyDto>();
while (rs.Read()) {
  results.Add(new MyDto {
    Id = rs.ReadInt("Id"),
    Name = rs.ReadString("Name"),
    ...
  };
}

Использование LINQ to SQL:

using (var dc = MyDataContext()) {
  var results = from d in dc.MyDataType
                select new MyDto {
                  Id = d.Id,
                  Name = d.Name,
                  ...
                };
}

Однако я склонен добавлять метод для настройки сгенерированного объекта с помощью вспомогательного метода для выполнения сопоставления (что помогает избежать повторения кода копирования свойства для каждого запроса).

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