Automapper Ausnahme: "Fehlt der Typ der map-Konfiguration oder ein nicht unterstütztes mapping".

Ich versuche, mit Ninject in einem ASP.NET MVC 5-Anwendung, die verwendet AutoMapper für mapping-Modell zur Ansicht Modell und vice versa.
Leider bekomme ich eine Fehlermeldung, die besagt, dass der Typ der map-Konfiguration fehlt.

Erstellte ich ein Ninject dependency resolver:

namespace MyNamespace.Infrastructure
{
    public class NinjectDependencyResolver: IDependencyResolver
    {
        private IKernel kernel;

        public NinjectDependencyResolver(IKernel kernelParam)
        {
            kernel = kernelParam;
            AddBindings();
        }

        public object GetService(Type serviceType)
        {
            return kernel.TryGet(serviceType);
        }

        public IEnumerable<object> GetServices(Type serviceType)
        {
            return kernel.GetAll(serviceType);
        }

        private void AddBindings()
        {
            kernel.Bind<IMyBLL>().To<MyBLL>();
        }
    }
}

Ich diese, einen Domänencontroller zu erstellen:

namespace MyNamespace.Controllers
{
    [Authorize]
    public class HomeController : Controller
    {
        private IMyBLL _myBLL;

        public HomeController(IMyBLL myBLLParam)
        {
            _myBLL = myBLLParam;
        }

        public PartialViewResult AddRecord()
        {
            return PartialView(new AddRecordViewModel());
        }

        [HttpPost]
        public void AddRecord(AddRecordViewModel recordViewModel)
        {
            var record = Mapper.Map<Record>(recordViewModel);

            _myBLL.AddRecord(record, User.Identity.Name);
        }
    }
}

Global.asax:

namespace MyNamespace.WebApplication
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            ApplicationUserManager.StartupAsync();
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AutoMapperWebConfiguration.Configure();
        }
    }
}

Dieser ruft die AutoMapper-Konfiguration:

namespace MyNamespace.WebApplication.Infrastructure
{
    public static class AutoMapperWebConfiguration
    {
        public static void Configure()
        {
            Mapper.Initialize(cfg => cfg.AddProfile(new RecordProfile()));
        }
    }

    public class RecordProfile : Profile
    {
        protected override void Configure()
        {
            Mapper.CreateMap<AddRecordViewModel, Record>().ReverseMap();
        }
    }
}

Wenn ich diesen starte bekomme ich folgende Fehlermeldung:

Missing type map configuration or unsupported mapping.

Mapping types:
AddRecordViewModel -> Record
 MyNamespace.WebApplication.ViewModels.Home.AddRecordViewModel -> MyNamespace.Model.Record

 Destination path:
 Record

 Source value:
 MyNamespace.WebApplication.ViewModels.Home.AddRecordViewModel

Vermisse ich etwas.
Es funktionierte, bevor ich die Ninject dependency resolver.
Jetzt ist es nicht scheinen zu finden, die Zuordnungen.


Edit:

Wenn ich die Mapping-Erstellung direkt auf die controller-Methode funktioniert es:

[HttpPost]
public void AddRecord(AddRecordViewModel recordViewModel)
{
    Mapper.CreateMap<AddRecordViewModel, Record>().ReverseMap();
    var record = Mapper.Map<Record>(recordViewModel);

    _myBLL.AddRecord(record, User.Identity.Name);
}

Die Zuordnung selbst und die Modelle und Modelle scheinen nicht das problem zu sein. Ich denke, dass das programm irgendwie nicht finden Sie die Zuordnungen.

Selbst wenn ich rufen Sie die Auto-Mapper Web-Konfiguration in der controller-Methode funktioniert es:

public void AddRecord(AddRecordViewModel recordViewModel)
{
    Infrastructure.AutoMapperWebConfiguration.Configure();

    var record = Mapper.Map<Record>(recordViewModel);

    _myBLL.AddRecord(record, User.Identity.Name);
}
  • Sie definiert eine AddRecordViewModel -> Platte, aber nicht die andere Weise herum. Sie brauchen eine zweite Zuordnung für den anderen Weg.
  • Ich wurde nun das zweite mapping. Leider bekomme ich immernoch die gleiche Fehlermeldung. Es scheint, wie das Programm nicht finden Sie die Zuordnung.
  • Hat Ihr Record irgendwelche virtuelles Eigentum?
  • Ich habe genau dieses problem. Ich habe noch andere Karten, die mit dem Queryable Erweiterungen (Projekt -) aber eine weitere Karte erstellt, weiterhin zu sagen, es ist kein mapping, obwohl die MapperConfiguration deutlich wird eine Karte erstellt, für die beiden Arten. Alle in das gleiche Projekt läuft auf der gleichen Maschine. Bitte helfen Sie mit!
  • Wow, ich wusste gar nicht, dass mapperConfig.CreateMapper() war die Schaffung die EINZIGE Instanz, die die Zuordnungen! Ich habe mit Einspritzung zu bekommen, dass mapper, ich kann nicht einfach Automapper verwenden.Mapper.Anzeigen...
  • Ich bin auch vor dem gleichen Problem. Sieht aus wie das Programm ist nicht in der Lage zu finden, die Zuordnung. helfen Sie mir, um herauszufinden, die Lösung

InformationsquelleAutor Alexander | 2015-01-23
Schreibe einen Kommentar