Правильное место для инициализации объекта в ASP.NET MVC - PullRequest
1 голос
/ 18 октября 2010

Я новичок в программировании MVC, поэтому, пожалуйста, ответьте на мой основной вопрос!

У меня есть класс Status с конструктором по умолчанию (в приложении ASP.NET MVC).

public Status()
{
    this.DatePosted = DateTime.Now;
}

Я заметил, что Fluent NHibernate вызывает этот конструктор каждый раз, когда он выбирает список существующих объектов Status из базы данных.Следовательно, конструктор не кажется подходящим местом для инициализации даты.

Куда мне переместить эту инициализацию?Перемещение его в контроллер (добавление действия контроллера состояния) также, по-видимому, нарушает принцип, согласно которому контроллер не должен принимать никаких бизнес-решений.Должен ли я перевести его в статус DAO?(В традиционных приложениях ASP.NET Web Form, с которыми я работал, DAO просто принимал бизнес-объект и сохранял его в базе данных и не содержал никакой логики)

Я хотел бы знать, как сделать это правильно,Есть ли еще один слой, который мне здесь не хватает, где должна происходить эта инициализация?

1 Ответ

3 голосов
/ 18 октября 2010

Я заметил, что Fluent NHibernate называет это конструктор каждый раз, когда он получил список существующих объектов состояния из база данных. Это не кажется правильным

Это именно то, что должно происходить. Почему ORM не вызывает конструктор по умолчанию для объекта? Я думаю, что каждая раздача DAL и ORM в мире вызовет сброс DatePosted, потому что так работают конструкторы.

Ваше свойство DatePosted, вероятно, должно быть установлено через ModelBinding или вручную в контроллере и не должно быть частью конструктора.

...