0

非常によく似た DTO があります。

これらは、テスト リソースを識別する 1 つのプロパティのみが異なります。

代わりに EditAddTestDTO を作成して、

public int<Nullable> TestId {get;set;}

次に、明らかに TestId がない Create-Scenario では機能しないため、RequireAttribute を配置することはできません。

その問題をどのように解決しますか?

既に持っているように 2 つの DTO を作成しますか、それとも AddEditBaseDTO ですか?

public class EditTestDTO
{        
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public int Number { get; set; }
    [Required]
    public int SchoolclassCodeId { get; set; }
    [Required]
    public int SchoolyearId { get; set; }
    [Required]
    public int TestTypeId { get; set; }
    [Required]
    public int TestId { get; set; }
}

public class CreateTestDTO
{
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public int Number { get; set; }
    [Required]
    public int SchoolclassCodeId { get; set; }
    [Required]
    public int SchoolyearId { get; set; }
    [Required]
    public int TestTypeId { get; set; }
}
4

2 に答える 2

2

基本クラスを共有することは避けます。クラス間で共有しようとしているロジックはないので、クリーンでシンプルに保ちます。

両方のモデルに同じコードを使用したい場合は、代わりにインターフェイスを追加し、2 つのクラスにそれを実装させます。これには、インターフェイスを使用するサービスを含む別のプロジェクトでインターフェイスを定義できるという利点があります。

編集:

サービスで読み取りアクセスのみが必要であると仮定すると、次のようなものを持つことができますが、アクセスが必要なプロパティによって異なります。

public interface ITestDTO
{
    DateTime Date { get; }
    int Number { get; }
    int SchoolClassCodeId { get; }
    int SchoolYearId { get; }
    int TestTypeId { get; }
    int? TestId { get; }
}

public class EditTestDTO : ITestDTO
{
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public int Number { get; set; }
    [Required]
    public int SchoolClassCodeId { get; set; }
    [Required]
    public int SchoolYearId { get; set; }
    [Required]
    public int TestTypeId { get; set; }
    [Required]
    public int TestId { get; set; }

    int? ITestDTO.TestId { get { return TestId; } }
}

public class CreateTestDTO : ITestDTO
{
    [Required]
    public DateTime Date { get; set; }
    [Required]
    public int Number { get; set; }
    [Required]
    public int SchoolClassCodeId { get; set; }
    [Required]
    public int SchoolYearId { get; set; }
    [Required]
    public int TestTypeId { get; set; }

    int? ITestDTO.TestId { get { return null; } }
}

null 許容の TestId を使用すると、サービスでの編集と作成を区別できます。

于 2015-06-29T08:28:11.597 に答える