0

モデル:

public class Student
{
    public int StudentID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Gender Gender { get; set; }
    public string Address { get; set; }
}

DB コンテキスト:

public class MyContext : DbContext
{

   public MyContext():base(connectionstring)
   {
   }

   public DbSet<Student> Student { get; set; }

}

ラッパー クラス:

public class StudentWrapper
{

    public int StudentID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Gender Gender { get; set; }
    public string Address { get; set; }

}

実装:

public void AddStudent()
{

   using(MyContext ctx = new MyContext())
   {
      StudentWrapper newStudent = new StudentWrapper(); // If ever I wanted this `working`

      ctx.Student.Add(newStudent);
   }

}

CRUD 操作でモデルを直接使用するのではなく、モデル クラスのラッパーを作成したいのですが、そうする権利がありますか?

4

1 に答える 1

3

私見では、

ラッパーにカスタム ロジックを書きたくなるまでは、良い考えではありません。通信目的でモデル(またはDTOオブジェクトと言う)を使用していると思います。

ラッパーを追加する場合は、それを DTO にマップし直す必要もあります。(AutoMapper が役に立ちます)

したがって、これを行う非常に具体的な理由があるまでは、ラッパーを作成する意味がありません。シナリオの 1 つは、WPF または Silverlight で変更対応モデル (つまり、INotifyPropertyChanged インターフェイスを実装するモデル) が必要なアプリケーションを作成することです。

また、モデルの動作を拡張する必要がある場合は、継承の前に拡張メソッドについて考えてください。

于 2013-04-02T07:49:19.550 に答える