Привязка модели NHibernate ASP.NET MVC - PullRequest
5 голосов
/ 14 июля 2010

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

public int CategoryId {get;set;}

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

public Category Category {get;set;}

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

Например, я не мог просто иметь список выбора значений Category Id в моем представлении, принимать объект product в моем действии контроллера и ожидать, что MVC преобразует его в объект категории.

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

Есть ли лучший способ?

Ответы [ 2 ]

7 голосов
/ 14 июля 2010

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

4 голосов
/ 14 июля 2010

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

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

...