C# 为实体框架模型创建包装类可以吗?

C# 为实体框架模型创建包装类可以吗?,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,型号: DBContext: 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; } } 实施: publ

型号:

DBContext:

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; }
}
实施:

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; }

}
我想为我的模型类制作一个包装器,而不是在CRUD操作中直接使用我的模型,这样做对吗

除非您想在包装器中编写一些自定义逻辑,否则这不是一个好主意。我认为您正在使用模型(或者更确切地说是DTO对象)进行通信

如果添加了包装器,则还需要将其映射回DTO。(AutoMapper可能会有所帮助)

所以,除非你们有非常具体的理由这样做,否则对我来说,创建包装器是没有意义的。其中一个场景是在WPF或Silverlight中编写一个应用程序,您需要一个变更感知模型(即实现INotifyPropertyChanged接口的模型)

此外,如果需要扩展模型的行为,请在继承之前考虑扩展方法。

IMHO

除非您想在包装器中编写一些自定义逻辑,否则这不是一个好主意。我认为您正在使用模型(或者更确切地说是DTO对象)进行通信

如果添加了包装器,则还需要将其映射回DTO。(AutoMapper可能会有所帮助)

所以,除非你们有非常具体的理由这样做,否则对我来说,创建包装器是没有意义的。其中一个场景是在WPF或Silverlight中编写一个应用程序,您需要一个变更感知模型(即实现INotifyPropertyChanged接口的模型)


此外,如果需要扩展模型的行为,请在继承之前考虑扩展方法。

请说明这样做的原因?你想在里面写些代码吗?我只想用这个包装器来添加新学生、编辑和删除。请说明这样做的原因?你想在里面写些代码吗?我只想用这个包装器来添加新学生、编辑和删除。同意Sauraph。如果您想对get set进行某种验证,那么它可能会有所帮助。请同意Sauraph。如果您想对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);
   }

}