Я использую Subsonic 3 и Automapper в проекте asp.net MVC3.
В моем HttpPost ActionResult я беру свою модель и сопоставляю ее с моей сгенерированной Subsonic сущностью.
Сопоставление не работает, но я не могу обновить сущность.
При дальнейшем осмотре это связано с тем, что у меня нет грязных столбцов, поэтому мой вызов Update () не выполняется, поскольку Subsonic не думает, что ему нужно что-либо обновлять.
Я переделал загрузку кода - даже заставил метод снова загрузить сущность из базы данных перед сопоставлением с моделью. Просто кажется, что отображение разрушает отслеживание dirtyColumns. Например. если я сопоставлю после загрузки из БД, а затем изменю случайное свойство, оно не будет помечено как грязный столбец.
Я также пробовал использовать вызов метода 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);
}
Статические методы в моем PersonRepository просто вызывают Subsonic Update () и Save () соответственно.
Любые идеи будут очень признательны. Теперь я думаю, что мне может потребоваться добавить некоторые дополнительные свойства в мою модель, чтобы убедиться, что они перенесены в сущность автоматическим преобразователем.
В худшем случае мне придется просто не использовать Automapper при обратном сопоставлении сущностей из модели, что было бы отстой.
AutoMapper.Mapper.Map<SinglePersonModel, Data.Person>(model, person);
- А ты так пробовал? Это не назначает новый экземпляр объекта, а присваивает его существующему объекту. Просто мысль. Я понимаю, что не хочу загружать его из базы данных. Но подумал, что это может немного помочь :) - person Buildstarted   schedule 31.03.2011