Domanda

Sto usando subsonic 3 e Automapper su un progetto MVC3 ASP.NET.

Nel mio httpPost ActionResult, sto prendendo il mio modello e la mappano alla mia entità generata da subsonica.

La mappatura funziona senza probs, ma non posso aggiornare l'entità.

All'ulteriore ispezione, è perché non ho colonne sporche, quindi la mia chiamata da aggiornare () non riesce come subsonic non ritiene che abbia bisogno di aggiornare qualsiasi cosa.

Ho ripreso i carichi del codice - anche per forzare il metodo per caricare nuovamente l'entità dal DB prima di mappare contro il modello. Sembra che la mappatura distrugga il tracciamento di DirtyColumns. Per esempio. Se io mappare dopo il caricamento dal DB, quindi modificare una proprietà casuale, non viene contrassegnato come una colonna sporca.

Ho anche provato a utilizzare la chiamata del metodo SetyloLolod (TRUE). Nessuna gioia dopo la mappatura.

Ecco il mio metodo:

    [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);
    }
.

I metodi statici sul mio personrepository chiamano rispettivamente l'aggiornamento della subsonica () () () ().

Qualsiasi idea sarebbe molto apprezzata. Ora sto pensando che potrei aver bisogno di mettere alcune proprietà aggiuntive nel mio modello per assicurarmi di essere riportati nell'entità dall'automata.

Nel peggiore dei casi non dovrò semplicemente usare l'automagrapper durante la mappatura delle entità dal modello, che succhiare.

È stato utile?

Soluzione

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 :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top