Subsonic и AutomaPper - коллекция GraphicColumns пуста, поэтому не может обновить
-
14-11-2019 - |
Вопрос
Я использую 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 :)