私はエンティティフレームワークでasp.net mvcを使用しており、DDDを学び始めています。私はアンケートを含むプロジェクトに取り組んでいます。ここに私のドメインモデルです:ビューモデルを構築する最善の方法は何ですか?
public class Survey
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public decimal MinAcceptanceScore { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyQuestion> Questions { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
}
私は別のviewmodelsを作成しましたので、私は異なるビューのための調査の異なる部品が必要です。
public class ShortSurveyViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
}
public class ShortSurveyWithPrizesViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyAttempt> UserAttempts { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
}
public class SurveyEditViewModel
{
public int? SurveyID { get; set; }
public string Name { get; set; }
public decimal MinAcceptanceScore { get; set; }
public int UserFailsCount { get; set; }
public IEnumerable<SurveyQuestion> Questions { get; set; }
public IEnumerable<Prize> Prizes { get; set; }
}
私は私をしたい場合は、私のアーキテクチャを構築するための最良の方法だろう何適切なビューモデルに必要な情報を得るためにリポジトリを調査しますか?私が見
異なるsolusions:
リポジトリがSurveyServiceへのIQueryableを返すことができ、サービスがapproprieteビューモデルを返すことができますが、私はビューモデルがUIで作成する必要があると思うので、これを行うことは権利であることをためらいますサービス層ではありません。
私のドメイン層に3つの適切なクラスを作成します。しかし、今やドメインは表現に依存し、新しいビューごとに新しいドメインクラスを作成する必要があります。
完全なドメインオブジェクトを取得し、特定のビューに必要なプロパティだけをマップします。これは私の例ではうまくいかない質問は一つの表現でしか必要でなく、重いコレクションかもしれません。あなたの主な関心事は、ビューモデルに必要なデータの量対データモデルから取得したデータの量であることを考えると
パーシャルビューを使用 –
ViewModelsはUIに存在し、コントローラに実装される必要があります。 DALとドメインのレイヤーはそれらの知識がありません –
@DaveA私は部分的なビューを使用しますが、質問はそれに関するものではありません。私はビューモデルを構築する最適な方法について質問しています。 –