DTOs: лучшие практики

Вы можете использовать test -d (см. man test).

-d file Истина, если файл существует и является каталогом.

Для Пример:

test -d "/etc" && echo Exists || echo Does not exist

Примечание: команда test такая же, как условное выражение [ (см. man [), поэтому она переносима по сценариям оболочки.

[ - это синоним встроенного test, но последний аргумент должен быть буквальным ], чтобы соответствовать открытию [.

Для возможные варианты или дополнительную помощь:

  • help [
  • help test
  • man test или man [
16
задан 6 September 2009 в 13:57
поделиться

3 ответа

Вопрос 1: Если DTO's, который Вы должны передать, является просто простым подмножеством Вашего объекта области, Вы можете использовать modelmapper, чтобы не заполнять Вашу кодовую базу логическим меньше отображением. Но если Вы должны обратиться, некоторая логика/преобразование к Вашему отображению тогда делают это сами.

Вопрос 2: Вы можете и вероятно должны создать DTO для каждого объекта области, который что Вы имеете на своем главном DTO. У DTO может быть несколько DTO's в нем, один для каждой области возражают, что Вы должны нанести на карту. И нанести на карту их Вы могли сделать это сами или даже использовать некоторый modelmapper.

Вопрос 3: не выставляйте всю свою область, если Ваша точка зрения не требует его к. Также Вы не должны создавать DTO для каждого представления, попытаться создать DTO's, которые выставляют, какая потребность быть выставленным и может быть снова использован, чтобы не иметь DTO's сети магазинов, которые делятся большой информацией. Но это главным образом depend's на Ваших прикладных потребностях.

, Если Вам нужно разъяснение, просто спросите.

0
ответ дан 30 November 2019 в 09:25
поделиться

Я вроде как использую DTO в проекте. Я стараюсь создавать DTO только для того, чтобы показывать данные, которые мне нужны для определенного представления. Я получаю все данные, показанные в представлении, в моем классе доступа к данным. Например, у меня может быть объект Order, который ссылается на объект Client:

public class Client{
    public int Id{get;set;}
    public string Name{get;set;}
}

public class Order{
    public int OrderID{get;set;}
    public Client client{get;set;}
    public double Total{get;set;}
    public IEnumerable<OrderLine> lines {get;set;}
}

Затем в моем OrderListDTO может быть что-то вроде:

public class OrderListDTO{
    public int OrderId{get;set;}
    public string ClientName{get;set;}
    ...
 }

Какие поля я хочу показать в моем представлении. Я получаю все эти поля в своем коде доступа к базе данных, поэтому мне не нужно беспокоиться об ассоциациях сущностей в моем представлении или коде контроллера.

3
ответ дан 30 November 2019 в 09:25
поделиться

Я собираюсь предположить, что объекты вашей модели предметной области имеют идентификатор первичного ключа, который может соответствовать идентификатору из базы данных или хранилища, из которого они были получены.

Если вышесказанное верно, тогда ваш DTO преодолеет типовые ссылки на другие DTO, такие как объекты вашего домена, в форме идентификатора внешнего ключа. Таким образом, отношение OrderLine.OrderHeader в доменном объекте будет OrderLine.OrderHeaderId в DTO.

Надеюсь, что это поможет.

Могу я спросить, почему вы решили использовать DTO вместо ваших многофункциональных объектов домена в представлении?

0
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: