2013-04-02 2 views
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; } 
} 

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

} 

Я хочу сделать обертку для моей модели класса es вместо прямого использования моих моделей в CRUD-операциях, это право на это?

+1

И причина для этого, пожалуйста? Вы хотите написать код? – TalentTuner

+0

Я просто хочу использовать эту оболочку, которая будет использоваться для добавления нового студента, редактирования и удаления. – user2131005

ответ

3

ИМХО,

Это не очень хорошая идея, пока вы хотите написать какой-то логики в обертках. Я думаю, что вы используете свою модель (точнее, я бы назвал объекты DTO) для целей коммуникации.

Если вы добавляете обертку, то вам нужно также отобразить ее обратно в DTO. (AutoMapper может быть полезен)

Итак, пока у вас нет особых причин для этого, не имеет смысла создавать для меня обертку. Одним из сценариев будет запись приложения в WPF или Silverlight, где вы хотите модель с поддержкой изменения (например, модель, реализующая интерфейс INotifyPropertyChanged)

Кроме того, если вам необходимо расширить поведение модели, подумайте о методах расширения до наследование.

+0

В этой оболочке я планирую добавлять, редактировать, удалять методы – user2131005

+0

Согласен с Sauraph. Если вы хотите сделать какую-то проверку на get set, тогда это может быть полезно. –

Смежные вопросы