3

ドメイン オブジェクトを保持する 4 つのプロパティを持つ SchoolyearEditRequest という名前のデータ転送オブジェクトがあります。

1) 私の DTO がドメイン エンティティをラップするのは間違っていますか?

2) はいの場合、すべてのドメイン エンティティに対して、クライアント側に本当に必要なプロパティのみを含む xxxDTO "ラッパー" を作成する必要がありますか?

public class SchoolyearEditRequest
{
    // Create a SchoolclassCodeDTO ???
    // Create a SchoolyearDTO ???
    // Create a collection of TimeTableDTO`s ???

    public IEnumerable<SchoolclassCode> SchoolclassCodes { get; set; }
    public IEnumerable<TimeTable> TimeTablesWeekA { get; set; }
    public IEnumerable<TimeTable> TimeTablesWeekB { get; set; }
    public Schoolyear Schoolyear { get; set; }
}
4

2 に答える 2

2

DTO がドメイン エンティティをラップするのは間違っていますか?

はい、違います。DTO には、DTO を構成するオブジェクトに関連付けられている可能性のあるロジックを含め、ロジックを空にする必要があります。ドメイン オブジェクトを DTO に含めると、ドメイン ロジックが公開され、そもそも DTO を使用する主な利点が失われます。

はいの場合、すべてのドメイン エンティティに対して、クライアント側に本当に必要なプロパティのみを含む xxxDTO "ラッパー" を作成する必要がありますか?

正しい、それがその考えです。そうすることで、クライアントとドメイン オブジェクトの間の結合が解消されます。

注: マッパーを使用して、DTO とドメイン オブジェクト間のマッピング プロセスを簡略化するのが一般的です。

于 2013-10-30T19:22:43.367 に答える
0

どちらかといえば、逆にする必要があります。ドメイン エンティティは DTO をラップする必要があります。

DTO の目的は、できるだけ一般的な方法でデータを単純に運ぶことです。これは、イベントやビジネス ロジックなどがないことを意味します。また、ドメイン エンティティへの参照を含めることもできません。これは、DTO を持つ目的を無効にします。

于 2013-10-30T19:22:32.000 に答える