AutoMapper слияния двух типов Игнорирование одного свойства

1

У меня есть это лицо:

public class MyType
{
    public Guid Id {get;set;}
    public string Name {get;set;}
}

Я хочу объединить два из этих типов вместе, но исходный Id должен быть неизменным.

Таким образом, объекты заполняются как таковые:

From the Database => MyType {
    Id: 012312-42134-12321-12,
    Name: "This Type"
}

From the View => MySecondType {
    Id: null,
    Name: "This Type Changed"
}

И я хочу, чтобы объединить MySecondType в MyType, но игнорировать Id поле в объединении.

Поэтому я подумал, что, возможно,

Mapper.Map(mySecondType, myType);

Чтобы получить myType базы данных для заполнения mySecondType но нет возможности игнорировать свойство.

Теги:
asp.net-mvc
automapper

1 ответ

2
Лучший ответ

При настройке AutoMapper вы можете игнорировать свойство:

Mapper
    .CreateMap<MySecondType, MyType>()
    .ForMember(x => x.Id, opt => opt.Ignore());

При этом было бы гораздо разумнее использовать модель представления в ASP.NET MVC. Таким образом, вы бы иметь свой DB связанную модель MyType с Id и Name свойства и имеют MyTypeViewModel, который будет иметь только Name свойства и использовать в вашем представлении. Тогда вам не нужно игнорировать какие-либо свойства. Это автоматически исходит из дизайна ваших моделей просмотра.

  • 0
    Но это не работает при попытке изменить сущность! Мне нужен Id для поиска! Я создал это отображение, будет ли оно работать тогда, когда я использую map(object src, object dest) ??
  • 1
    Очевидно, что у вас должны быть EditViewModel и CreateViewModel. Один с идентификатором и один без. Вот и вся цель моделей просмотра: иметь их на каждой странице / просмотре. Если вы думаете, что один и тот же класс будет повторно использоваться во всех ваших представлениях, то вы столкнетесь с большим количеством неприятностей и проблем, подобных той, что у вас есть в данный момент.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню