Subsonne et automapper - La collection DirtyColumns est vide donc ne peut donc pas mettre à jour

StackOverflow https://stackoverflow.com/questions/5491733

Question

J'utilise subsonse 3 et automapper sur un projet ASP.NET MVC3.

Dans mon HttpPost ActionResult, je prends mon modèle et je la mappant à mon entité générée subsonique.

Le mappage ne fonctionne pas de probs, mais je ne peux pas mettre à jour l'entité.

Après une inspection ultérieure, c'est parce que je n'ai pas de colonnes sales, mon appel à mettre à jour () échoue comme subsonique ne pense pas que cela doit mettre à jour quoi que ce soit.

J'ai repoussé les charges de code - même forçant la méthode pour charger à nouveau l'entité de la DB avant la cartographie contre le modèle. Il semble juste que la cartographie détruit le suivi de la batteuseColumns. Par exemple. Si je mappe après le chargement de la DB, puis changez une propriété aléatoire, elle ne se marie pas comme une colonne sale.

J'ai aussi essayé d'utiliser l'appel de méthode SETTICOaRed (True). Pas de joie après la cartographie.

Voici ma méthode:

    [HttpPost]
    public virtual ActionResult Edit(SinglePersonModel model)
    {
        if (ModelState.IsValid)
        {
            Data.Person person;

            //Now Map my model to my entity - this works
            Mapper.CreateMap<SinglePersonModel, Data.Person>();
            person = Mapper.Map<SinglePersonModel, Data.Person>(model);

            //THIS DOESN'T SET MY COLUMN TO DIRTY
            person.Link = "asdjsadij";

            //THIS DOESN'T SET MY COLUMN TO DIRTY EITHER
            person.SetIsLoaded(true);
            person.Link = "asdjsadij";

            if (person.PersonId > 0)
                PersonRepository.UpdatePerson(person);
            else
                PersonRepository.CreatePerson(person);

            return RedirectToAction(MVC.SecureAdministration.Person.Index());
        }
        else return View(model);
    }

Les méthodes statiques sur mon dépositaire, appelez respectivement la mise à jour de SUBSTONIC ().

Des idées seraient très appréciées. Je pense maintenant que je devrais peut-être mettre des propriétés supplémentaires dans mon modèle afin de vous assurer qu'ils sont reportés à l'entité par la FADApper.

Dans le pire des cas, je devrai tout simplement ne pas utiliser la consomapper lors de la mappe vers des entités du modèle, qui serrerait.

Était-ce utile?

La solution

AutoMapper.Mapper.Map<SinglePersonModel, Data.Person>(model, person); - Have you tried it like this? This doesn't assign a new instance of the object but assigns it to the existing object. Just a thought. I understand the want of not loading it from the db. But figured this might help a bit :)

Thanks for that - glad to help out :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top