2012-07-02 4 views
7

Не знаете, как это объяснить, но здесь идет ...MVC3 Просмотр модели в сравнении с Entity Framework Модель

Я построил код первую модель данных с использованием EF 4.3. Один из классов «Адрес» содержит типичные адресные данные, улицу, город, штат и т. Д. Другие классы в модели содержат экземпляры класса «Адрес».

Проблема. Данные будут собраны/представлены с использованием разных представлений, некоторые из которых потребуют полей адресов, а другие - нет.

Я могу создать разные модели просмотра, каждый из которых имеет необходимые атрибуты проверки и скопировать данные между моделью данных и моделью просмотра, но это кажется неправильным.

Что мне не хватает? Должен быть более умный способ сделать это.

Спасибо за вашу помощь, Джимми

ответ

6

Сначала прочитайте эти вопросы и ответы на них:

и эта статья может помочь:

В заключение, я думаю, что в большинстве случаев это полезно иметь пухлые модели предметной области (DM) но легкий вес модели представления (PM) связанные с ним. Поэтому, когда мы хотим отредактировать только небольшой кусок этого жирного DM, один из наших PM поднимет руку.

Представьте себе этот класс в DM:

namespace DomainModels 
{ 
    public class Person 
    { 
     public int ID { get; set; } 
     public string FirstName { get; set; } 
     public string MiddleName { get; set; } 
     public string LastName { get; set; } 
     public DateTime? DoB { get; set; } 
     public MyAddressDM Address { get; set; } 
     public string Phone { get; set; } 
     public IEnumerable<MyCarModel> Cars { get; set; } 
     //etc. 
    } 
} 

Теперь представьте себе, что в одной точке зрения, мы должны изменить только адрес и телефон. Легкий вес PM может быть как:

namesapce PresentationModels 
{ 
    public PersonAddressPhone 
    { 
     public int ID { get; set;} 
     public string FullName { get; set;} 
     public string AddressSteet { get; set; } 
     public string AddressCity { get; set; } 
     public string AddressState { get; set; } 
     public string AddressZipCode { get; set; } 
     public string Phone { get; set; } 
    } 
} 

и в другой точке зрения, нам нужно добавить/удалить автомобили для человека:

namesapce PresentationModels 
{ 
    public PersonCars 
    { 
     public int ID { get; set;} 
     public string FullName { get; set;} 
     public IEnumerable<PMCar> Cars { get; set;} 
    } 
} 

Mapping между DO и ПМ является золотой кусок этой головоломки. Обязательно взгляните на AutoMapper.

+1

Спасибо Tohid. Вы дали мне пищу для размышлений. Я читаю и перечитываю статьи, которые вы указали. Также проверяем AutoMapper. -Спасибо, Джимми – JConnell

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