ASP.NET привязка модели MVC NHibernate

С NHibernate я больше не выставляю внешние ключи на своих объектах области, таким образом, продукт больше не имеет свойство:

public int CategoryId {get;set;}

но вместо этого имеет:

public Category Category {get;set;}

Unforunately это, кажется, не работает так хорошо с автоматической привязкой модели в ASP.NET MVC - если я хочу просто связать набор формы непосредственно с моим объектом области.

Например, я не мог только иметь selectlist Значений идентификаторов Категории, по моему мнению, принять объект продукта в моем действии контроллера и ожидать, что MVC преобразует это в объект категории.

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

Существует ли лучший путь?

5
задан Ben Foster 14 July 2010 в 15:56
поделиться

2 ответа

Использование урезанных моделей представлений, специально разработанных для ваших представлений, является рекомендуемым подходом; вы можете упростить необходимые операции отображения, используя AutoMapper.

7
ответ дан 13 December 2019 в 19:20
поделиться

Также помните, что при использовании Nhibernate вы имеете дело с прокси-объектами, и лучше не пытаться сериализовать их через границы приложения, такие как привязка модели, веб-службы или удаленные вызовы.

Если вам нужно превратить CustomerID в Customer, вам нужно будет создать Custom Model Binder, который знает репозиторий данных и может принимать customerID и получать объект Customer. В некоторых случаях это полезно, но я бы не рекомендовал это для этого сценария.

4
ответ дан 13 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: