2010-08-14 85 views
1

我遇到以下問題。一個對象有一個地址,這個地址有一個國家。爲了填補一個下拉列表,在我的部分類對象的使用屬性數據庫可用的國家:ADO.net參考中加載的屬性

Countries = new SelectList(repository.GetAllCountries(), "ID", "country_name", objectX.CountryID); 

,並在:

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所產生查看它使用這樣的:

<%= Html.DropDownList("CountryID", Model.Countries, "--select--")%><%= Html.ValidationMessage("CountryID", "*")%> 

問題

當我創建一個新的對象一切順利這樣。在我給FormViewModel一個新的對象之前,我創建了一個新的(空白)地址對象和一個新的空白的Countries對象。我將它傳遞給FormViewModel中的視圖,並且可以根據需要創建對象。 問題出現時,我想編輯該對象具有相同的部分形式和相同的屬性,國家ID。它抱怨沒有地址,所以我要補充

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中修復的吧?

回答

0
public string CountryID { 
     get { 
      if (this.AddressesReference.EntityKey != null) { 
       this.AddressesReference.Load(); 
      } return this.Addresses.Countries != null ? this.Addresses.Countries.ID.ToString() : null; 
     } 
     set { 
      if (this.AddressesReference.EntityKey != null) { 
       this.AddressesReference.Load(); 
      } this.Addresses.Countries = Repository.Instance.GetCountryByID(Convert.ToInt32(value)); 
     } 
    } 

似乎做我想要什麼,但我認爲這是一種醜陋。更好的選擇總是可以發佈在這裏:)。