2010-11-15 50 views
1

我有一個簡單的數據表單創建,用於讀取地址信息。
地址信息存儲在多個表中:地址,城市,省,國家。爲了簡化這個問題,我只會提到地址和城市。 我正在通過WCF RIA Services上下文訪問數據。我在服務查詢:Silverlight 4工具包DataForm在瀏覽集合時包含空白項目

public IQueryable<Address> GetAddresses() 
    { 
     return from Ad in ObjectContext.Addresses 
       .Include("City") 
       // .Include("City.Province") 
       // .Include("City.Province.Country") 
       where Ad.AddressID == 10 
       select Ad; 
    } 

來幫助我調試,我已經限制了結果設置爲一個地址(Ad.AddressID == 10)。在服務元數據的城市表包括:

 [Include] 
     public City City { get; set; } 

我的DataForm的只讀模板的樣子:

 <dataFormToolkit:DataForm.ReadOnlyTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto" /> 
        <RowDefinition Height="Auto" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
       </Grid.ColumnDefinitions> 

       <dataFormToolkit:DataField Label="Street Address" > 
        <TextBox Text="{Binding Path=StreetAddress, Mode=TwoWay}" /> 
       </dataFormToolkit:DataField> 

       <dataFormToolkit:DataField Grid.Row="1" Label="City" > 
        <TextBox Text="{Binding Path=City.CityName, Mode=TwoWay}" /> 
       </dataFormToolkit:DataField> 
      </Grid> 
     </DataTemplate> 
    </dataFormToolkit:DataForm.ReadOnlyTemplate> 

現在,當調試我的DataForm,我期待只是1個地址記錄顯示。但它實際上帶回了2條記錄:期望的地址記錄和相關城市記錄。顯示的第一條記錄是包含鏈接城市的地址。第二個顯示爲空白,但是當進入代碼時,DataForm的CurrentItem顯示它是連接到第一個地址的City記錄。

如何限制DataForm中的項目以顯示和瀏覽地址表中的項目?

回答

0

事實證明,我在我的代碼後面加載了「AllEntities」。

dfAdd.ItemsSource = addressDataLoadResult.AllEntities; 

所以解決的辦法是將ItemsSource更改爲只加載「實體」。這限制了我的收藏僅限於地址對象。