Subsonic и AutomaPper - коллекция GraphicColumns пуста, поэтому не может обновить

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

Вопрос

Я использую Subsonic 3 и Automapper на проекте ASP.NET MVC3.

В моем HTTPPOST ActionResult я принимаю мою модель и сопоставив ее на мою присваиваемую сущность.

Картирование не работает без проблем, но я не могу обновить объект.

При дальнейшем проверке, это потому, что у меня нет грязных колонн, поэтому мой звонок обновить () не может потерпеть неудачу, так как дозвуковые не думают, что ему нужно что-нибудь обновлять.

Я повторно зажал нагрузки кода - даже принудительный способ загрузить сущность из БД снова перед отображением против модели. Кажется, что сопоставление уничтожает отслеживание грязных развлечений. Например. Если я наглядую после загрузки из БД, а затем измените случайное свойство, он не помечается как грязная колонна.

Я также пытался использовать вызов метода Setisloaded (True). Нет радости после отображения.

Вот мой метод:

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

Статические методы на моем человеком просто вызовите обновление дозвуковой () и сохранить () соответственно.

Любые идеи будут высоко оценены. Сейчас я думаю, что мне может понадобиться дополнительные свойства в мою модель, чтобы убедиться, что они переносятся в сущность на Authapper.

В худшем случае мне придется просто не использовать Automapper при сопоставлении обратно в объекты из модели, которая будет сосать.

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top