2011-07-19 15 views
0

私の質問は、エンティティの関連項目を並べ替える方法です。請求書の編集]ウィンドウで Entity Framework - リレーションプロパティを並べ替える

、私は1つのComboBoxの表示すべての顧客を持っている:

XAML:

<UserControl.Resources> 
     <CollectionViewSource x:Key="cvsCustomers" 
           d:DesignSource="{d:DesignInstance local:Customer, CreateList=True}" /> 
... 

    </UserControl.Resources> 

<ComboBox ItemsSource="{Binding Source={StaticResource cvsCustomers}}" .../> 

コードビハインド:

Dim cvsCustomers As System.Windows.Data.CollectionViewSource 
cvsCustomers = CType(Me.FindResource("cvsCustomers"), System.Windows.Data.CollectionViewSource) 

Dim qryCustomers = _ 
      From c In myEntities.Customers _ 
      Order By c.CustomerCode 
      Select c 
     cvsCustomers.Source = qryCustomers 

は今、私はすべて表示する第二コンボボックスを持っています選択された顧客の連絡先。これはうまく動作しますが、この2番目のComboBoxのエントリはIDによってソートされていないかソートされています。

XAML:

<ComboBox ItemsSource="{Binding Path=myInvoice.Customer.Contacts}" .../> 

第2コンボボックスのリストをソートするにはどうすればよいですか?

キングについて、ヒント/提案のため事前に と感謝、

ニコ

答えて

0

私は2つの可能なものがあると思います。

  • データをロードする:あなたはCustomerContacts関連をロードするためにEFの遅延読み込み機能を使用しているように聞こえます。連絡先をソートするには、ソートオプションを設定する必要があります。ソートオプションは設定されていませんが、lazyloadingでは設定できません。したがって、熱心に読み込んだり、明示的に読み込んでContactsを注文することができます。 EF4.1に基づいてUsing DbContext in EF 4.1 Part 6: Loading Related Entitiesにチェックしてください。このような何かは、明示的にロードする場合は:CollectionViewを通して

    //Oh, I'm not familiar with VB.NET, so it's C# code 
    var customer; // it's assumed to be initialized. 
    context.Entry(customer).Collection(c => w.Contacts) 
    .Query().Orderby(c =>c.Name).Load(); 
    
  • 順不同のデータをロードした後:あなたはCollectionViewためContactsさせることができます。 CollectionViewSource Class(MSDN)にご確認ください。あなたの答えのための

+0

オーケーおかげでたくさん、私はできるだけ早くこれを試してみましょう:=) – Nico

+0

はcontext.Entry(インスタンス) 'タートル...として遅い'、注意してください:) –

関連する問題