Asp.net MVC с NHibernate - как обрабатывать многие-к-одному при сохранении / создании объекта - PullRequest
0 голосов
/ 14 февраля 2011

У меня есть объект под названием «Рабочий» и другой объект под названием «Компания».В NHibernate-сопоставлении Worker. Я говорю

<many-to-one name="Company" column="CompanyID"/>

. Классы

public class Company 
{
   public virtual int Id {get; set;}
   public virtual string Name { get; set;}
}
public class Worker
{
   public virtual int Id {get; set;}
   public virtual Company Company { get; set;}
   public virtual CompanyID { get { return Company == null ? 0 : Company.Id;}}
}

На мой взгляд, для создания Worker у меня есть html-форма с вводом CompanyID.Как правильно обработать создание / обновление работника в моем контроллере после того, как пользователь отправит форму с html POST?Поле CompanyID доступно только для чтения.Как сделать TryValidate TryUpdateModel в этом случае?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Я не знаю ASP.NET и всего остального, но я могу рассказать вам, как вы должны реализовать его против NHibernate.

Вам необходимо передать свойства работника, включая CompanyID, на сервер. Я предлагаю использовать DTO вместо передачи сущности.

Если вам нужно больше подробностей, вы должны объяснить, как вы передаете эти данные на сервер.

//create a company-proxy. this doesn't touch the database
Company company = session.Load<Company>(companyId);
// assign it the the worker. You need to put the worker into the 
// session somehow before. this depends on your specific server interface
worker.Company = company;
0 голосов
/ 14 февраля 2011

Вы не должны использовать идентификатор, когда вы используете ORM. Сделайте что-то вроде session.Get<Company>(id), чтобы получить правильную сущность компании и назначить ее свойству Company вашей Worker сущности. Я даже удалю свойство CompanyID из вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...