Типизированный набор данных вместе с Dtos - PullRequest
1 голос
/ 20 апреля 2009

У меня есть веб-приложение, которое подключается к службам WCF для своей бизнес-логики. Я хотел бы использовать простые Dto для передачи данных на границе WCF по соображениям производительности и совместимости.

Однако я должен использовать типизированные наборы данных для доступа к данным (ORM или любая другая опция недоступна по политическим причинам).

Является ли хорошей идеей использовать Dto вместе с набранными наборами данных. Кто-нибудь делал это? Есть ли рекомендуемый шаблон? И самое главное, есть ли библиотека / инструмент / метод для автоматической генерации Dto из типизированных наборов данных?

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Шаблон перевода сущностей приходит на ум. http://msdn.microsoft.com/en-us/library/cc304747.aspx
Ну, может быть вариация на это.

Недавно мне пришлось сделать что-то похожее, и я просто создал еще один «слой», который переводит данные, хранящиеся в datarow / datatable и т. Д. В объект контракта данных. Сервисный уровень может вызывать этот новый метод уровня, используя в качестве параметра результаты вашего метода доступа к данным.

Вот быстрый и грязный пример PSUEDOCODE:

 public class personTranslator
 {

     public static PersonDataContract TranslateToContract(Datarow personDataRow)
    {
        PersonDataContract resultPerson = new Person;
        resultPerson.FirstName = personDataRow["FirstName"];
        resultPerson.LastName = personDataRow["LastName"];
        .
        .
        [etc.]

        return resultPerson;
    }
 }

ОБСЛУЖИВАНИЕ Класс

 public PersonDataContract GetSpecificPerson([Parameters])
 {
     [other setup/validation code...]
    return   PersonTranslator.TranslateToContract(PersonDataAccess.GetPersonRow([Parameters]));
 }
0 голосов
/ 20 апреля 2009

Я бы предложил использовать типизированные DataRow-s, DataTable-s. На самом деле нет большой разницы между типизированным DataRow и объектом Dto. Вы должны проверить производительность, чтобы помочь простым Dto-s (я сомневаюсь в этом). Что касается взаимодействия, типизированные DataRow-ы являются простыми классами, поэтому они так же совместимы, как объекты Dto.

...