У меня есть следующая проблема. У объекта есть адрес, и этот адрес имеет страну. Для того, чтобы заполнить DropDownList с доступными странами в БД я использую свойство в частичном классе объекта:ADO.net reference loading in Property
public string CountryID {
get { return this.Addresses.Countries != null ? this.Addresses.Countries.ID.ToString() : null; }
set { this.Addresses.Countries = Repository.Instance.GetCountryByID(Convert.ToInt32(value)); }
}
Сам список формируется в formviewmodel по:
Countries = new SelectList(repository.GetAllCountries(), "ID", "country_name", objectX.CountryID);
и в посмотреть он используется так:
<%= Html.DropDownList("CountryID", Model.Countries, "--select--")%><%= Html.ValidationMessage("CountryID", "*")%>
проблема
Когда я создаю новый объект, все идет хорошо. Прежде чем я отправлю новый объект в свой FormViewModel, я создам объект, новый (пустой) адресный объект и новый (пустой) объект Страны. Это я перехожу к представлению в FormViewModel, и я могу создать объект по мере необходимости. Проблема возникает, когда я хочу отредактировать этот объект с той же частичной формой и тем же свойством, CountryID. Он жалуется, что нет никакого адреса, так что я должен добавить
this.AddressReference.Load()
поэтому свойство становится:
public string CountryID {
get { this.AddressesReference.Load(); return this.Addresses.Countries != null ? this.Addresses.Countries.ID.ToString() : null; }
set { this.AddressesReference.Load(); this.Addresses.Countries = Repository.Instance.GetCountryByID(Convert.ToInt32(value)); }
}
Но теперь мой Создать метод не делает больше не работать, как в момент создания объекта не пока привязан к контексту объекта (он по-прежнему должен быть сохранен в БД), и
this.addressReference.Load()
вызывает проблемы.
Вопрос
Есть ли способ, что я могу использовать одну форму (частичный вид), а также одно свойство, используемое выше для создания, а также редактирования объекта?
P.S. Я начинаю не любить ленивую загрузку ADO.net в MVC1, я думаю, это исправлено в MVC2 правильно?