Я начал разрабатывать веб-приложение (портфель приложений) с nhibernate и asp mvc2.
У меня есть некоторые трудности, чтобы правильно изменить категорию приложения.
Вот мои модели:
public class Application
{
public virtual int Application_ID{ get; private set; }
public virtual string Name { get; set; }
public virtual Category Category { get; set; }
}
public class Category : ILookupItem
{
public virtual int Category_ID { get; set; }
public virtual string Name { get; set; }
}
Моя модель представления:
public class ApplicationEditModel
{
public Application Application { get; set; }
public SelectList Categories { get; set; }
}
Моя форма:
<% Html.BeginForm(new {id= Model.Application.Application_ID }); %>
<table>
<tr>
<td><%=Html.LabelFor(x => x.Application.Application_ID)%></td>
<td><%=Html.DisplayFor(x=>x.Application.Application_ID) %></td>
</tr>
<tr>
<td><%=Html.LabelFor(x=>x.Application.Name) %></td>
<td><%=Html.EditorFor(x=>x.Application.Name) %></td>
</tr>
<tr>
<td><%=Html.LabelFor(x=>x.Application.Category) %></td>
<td><%=Html.DropDownListFor(x=>x.Application.Category.Category_ID,Model.Categories,"Select a category") %></td>
</tr>
<tr><td><input type="submit" /></td></tr>
</table>
<% Html.EndForm(); %>
Действие моего контроллера:
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
Application app = _service.FindById(id);
TryUpdateModel<Application>(app, "Application");
_service.CommitChanges();
return RedirectToAction("Index");
}
Я могу назначить новую категорию,но если я перехожу на другую категорию, я получаю следующее сообщение:
идентификатор экземпляра Core.Model.Category был изменен с 2 на 3
Это кажетсяпотому что defaultmodelbinder обновляет ключ назначенной категории, а не назначает новую категорию с новым новым ключом.
Как правильно обновить сущность со всеми ее ссылками?
Возможно, я мог быиспользуйте пользовательскую модель представления, свяжите ее в контроллере и затем сопоставьте ее с моей моделью домена.Но я боюсь, что это даст мне слишком много работы (в конце у меня будет около 100 свойств, 30 ссылок и 5-6 списков в моей модели приложения).
Может ли Automapper быть полезен в этом случае для обновления существующего доменамодель?
Как вы справляетесь с такого рода обновлениями?