Автоматическая конфигурация конфигурации отсутствующего типа или неподдерживаемое отображение?

Модель сущности

public partial class Categoies { public Categoies() { this.Posts = new HashSet(); } public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public Nullable PositionId { get; set; } public virtual CategoryPositions CategoryPositions { get; set; } public virtual ICollection Posts { get; set; } } 

Просмотр модели

 public class CategoriesViewModel { public int Id { get; set; } [Required(ErrorMessage = "{0} alanı boş bırakılmamalıdır!")] [Display(Name = "Kategori Adı")] public string Name { get; set; } [Display(Name = "Kategori Açıklama")] public string Description { get; set; } [Display(Name = "Kategori Pozisyon")] [Required(ErrorMessage="{0} alanı boş bırakılmamalıdır!")] public int PositionId { get; set; } } 

CreateMap

 Mapper.CreateMap() .ForMember(c => c.CategoryPositions, option => option.Ignore()) .ForMember(c => c.Posts, option => option.Ignore()); 

карта

 [HttpPost] public ActionResult _EditCategory(CategoriesViewModel viewModel) { using (NewsCMSEntities entity = new NewsCMSEntities()) { if (ModelState.IsValid) { try { category = entity.Categoies.Find(viewModel.Id); AutoMapper.Mapper.Map(viewModel, category); //category = AutoMapper.Mapper.Map(viewModel); //AutoMapper.Mapper.Map(viewModel, category); entity.SaveChanges(); // Veritabanı işlemleri başarılı ise yönlendirilecek sayfayı // belirleyip ajax-post-success fonksiyonuna gönder. return Json(new { url = Url.Action("Index") }); } catch (Exception ex) { } } // Veritabanı işlemleri başarısız ise modeli tekrar gönder. ViewBag.Positions = new SelectList(entity.CategoryPositions.ToList(), "Id", "Name"); return PartialView(viewModel); } } 

И ошибка

Отсутствует конфигурация карты типа или неподдерживаемое отображение. Типы отображения: КатегорииViewModel -> Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D NewsCMS.Areas.Admin.Models.CategoriesViewModel -> System.Data.Entity.DynamicProxies.Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D

Целевой маршрут: Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D

Исходное значение: NewsCMS.Areas.Admin.Models.CategoriesViewModel

Что мне не хватает? Я пытаюсь найти, но я не вижу проблемы.

ОБНОВИТЬ

Я указал в application_start в Global.asax

 protected void Application_Start() { InitializeAutoMapper.Initialize(); } 

InitializeClass

 public static class InitializeAutoMapper { public static void Initialize() { CreateModelsToViewModels(); CreateViewModelsToModels(); } private static void CreateModelsToViewModels() { Mapper.CreateMap(); } private static void CreateViewModelsToModels() { Mapper.CreateMap() .ForMember(c => c.CategoryPositions, option => option.Ignore()) .ForMember(c => c.Posts, option => option.Ignore()); } } 

Благодарю.

Где вы указали код сопоставления (CreateMap)? Ссылка: Где я могу настроить AutoMapper?

Если вы используете статический метод Mapper, конфигурация должна выполняться только один раз для AppDomain. Это означает, что лучше всего разместить код конфигурации в запуске приложения, например, файл Global.asax для приложений ASP.NET.

Если конфигурация не зарегистрирована до вызова метода Map, вы получите Missing type map configuration or unsupported mapping.

Обратите внимание на class Categoies_7314E98C41152985A4218174DDDF658046BC82AB0ED9E1F0440514D79052F84D в исключении? Это прокси-сервер Entity Framework. Я бы рекомендовал вам избавиться от вашего контекста EF, чтобы гарантировать, что все ваши объекты будут загружены из базы данных и не будут существовать такие прокси-серверы:

 [HttpPost] public ActionResult _EditCategory(CategoriesViewModel viewModel) { Categoies category = null; using (var ctx = new MyentityFrameworkContext()) { category = ctx.Categoies.Find(viewModel.Id); } AutoMapper.Mapper.Map(viewModel, category); //category = AutoMapper.Mapper.Map(viewModel, category); entity.SaveChanges(); } 

Если поиск объекта выполняется на уровне доступа к данным (что, конечно, является правильным способом), убедитесь, что вы удаляете свой контекст EF перед возвратом экземпляров из своего DAL.

В профиле AutoMapper вашего classа вам необходимо создать карту для вашей сущности и viewmodel.

Сопоставление модели ViewModel To Domain:

Обычно это в AutoMapper/DomainToViewModelMappingProfile

В Configure() добавьте строку типа

 Mapper.CreateMap(); 

Модель домена для сопоставлений ViewModel:

В ViewModelToDomainMappingProfile добавьте:

 Mapper.CreateMap(); 

Пример Gist

Я сделал это, чтобы удалить ошибку:

 Mapper.CreateMap(); prospect = Mapper.Map(prospectFromDb, prospect); 

Проверьте файл Global.asax.cs и убедитесь, что эта строка находится там

  AutoMapperConfig.Configure(); 

Я нашел решение, спасибо всем за ответ.

 category = (Categoies)AutoMapper.Mapper.Map(viewModel, category, typeof(CategoriesViewModel), typeof(Categoies)); 

Но я уже не знаю причины. Я не могу полностью понять.

Я знаю, что это довольно старый вопрос, но я нашел подходящее решение, что я не объявлял атрибут сборки.

Мой код:

 using AutoMapper; ... namespace [...].Controllers { public class HousingTenureTypesController : LookupController { Mapper.CreateMap().ReverseMap(); } ... } 

Это было исправлено добавлением следующей строки перед объявлением пространства имен:

 [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(HousingTenureTypesController), "AutoMapperStart")] 

Полный код:

 using AutoMapper; ... [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(HousingTenureTypesController), "AutoMapperStart")] namespace [...].Controllers { public class HousingTenureTypesController : LookupController { Mapper.CreateMap().ReverseMap(); } ... } 

Обновите Automapper до версии 6.2.2. Это помогло мне

Interesting Posts

Play 2.4: Форма: не удалось найти неявное значение для сообщений параметров: play.api.i18n.Messages

Насколько дороги исключения в C #?

Возвращаемое значение в функции Bash

Получите 3D-координаты из пикселя 2D-изображения, если известны внешние и внутренние параметры

Макрос для копирования отдельных значений из одного листа Excel в другой

Как получить доступ к samba на гостевой Linux за VirtualBox NAT?

Как читать и редактировать события календаря Android с помощью нового Android 4.0 Ice Cream Sandwich API?

Навигация в django

Как убить стороннее приложение?

Как установить значок панели задач приложения в Windows 7

Lambda для выражений типа в Haskell?

Нераспознанный атрибут ‘targetFramework’. Обратите внимание, что имена атрибутов чувствительны к регистру

Ошибка Microsoft.Web.Infrastructure, Версия = 1.0.0.0, Культура = нейтраль, PublicKeyToken = 31bf3856ad364e35

AngularJS для цикла с числами и диапазонами

Чтение значений в переменную оболочки из трубы

Давайте будем гением компьютера.