Я застрял, пытаясь сопоставить класс ViewModel с помощью Automapper с классами, перечисленных ниже:Карта EditModel использования Automapper
public class Product
{
[Key]
public int ProductId { get; set; }
public string Name { get; set; }
public ICollection<Color> Color { get; set; }
}
public class Color
{
[Key]
public int id { get; set; }
public string value { get; set; }
public virtual ICollection<Product> products { get; set; }
}
public class ProductVM
{
[Key]
public int ProductId { get; set; }
public string Name { get; set; }
public List<int> Color { get; set; }
public IEnumerable<Color> Colors { get; set; }
}
С цветами я прохожу все доступные цвета к просмотру для пользователей, чтобы выбрать, и свойство цвета в получить значение, имеющее что-то вроде этого в поле зрения:
@Html.ListBoxFor(model => Model.Color, new MultiSelectList(Model.Colors, "id", "value"));
Тогда в contorller у меня есть метод Post, которая сохраняет его. Я попытался использовать Automapper для преобразования классов, но он не смог отобразить свойство Color, поскольку он должен получить объект Color по доступному id.
Mapper.CreateMap<ProductVM, Product>();
Product product = AutoMapper.Mapper.Map<ProductVM, Product>(productVM);
db.Products.Add(product);
db.SaveChanges();
Я пропустил что-то?
Помогло ли это решение для вас? –
Это почти работает так, как должно, но каким-то образом я получаю новые дополнительные записи в таблице цветов, то есть, если я передаю 2 идентификатора цвета, я получаю 2 новых цвета (значения которых равны нулю) и связанный с ними продукт, но не с оригинальными. – hitry
Я только что прочитал ваш комментарий, получили ли вы также объекты Color? –