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

本文关键字:创建 包装类 模型 框架 实体 | 更新日期: 2023-09-27 18:06:53

型号:

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

DBContext:

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操作中直接使用我的模型,这样做对吗?

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

IMHO,

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

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

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

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