エンティティを CollectionViewSource にバインドしました。次に、コード ビハインドでクエリを実行します。id フィールドは PK であるため、FirstOrDefault() を使用してアプリの実行を高速化する必要があると思います。しかし、それは常に例外をスローします...
XAML :
<Window.Resources>
<CollectionViewSource x:Key="contractlogoesViewSource" d:DesignSource="{d:DesignInstance my:contractlogo, CreateList=True}" />
</Window.Resources>
<Grid>
<Grid DataContext="{StaticResource contractlogoesViewSource}" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
...
コードビハインド:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
VBDAdvertisement.vbdadvertisementEntities vbdadvertisementEntities = new VBDAdvertisement.vbdadvertisementEntities();
System.Windows.Data.CollectionViewSource contractlogoesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contractlogoesViewSource")));
contractlogoesViewSource.Source = vbdadvertisementEntities.contractlogoes.Where(q => q.id.Equals(3)).FirstOrDefault();
}
未処理の例外をスローします。
An unhandled exception of type 'System.ArgumentException' occurred in
PresentationFramework.dll
Additional information: 'VBDAdvertisement.customer' is not a valid value for
property 'Source'.
しかし、式ツリーから FirstOrDefault() を省略すると、次のようになります。
contractlogoesViewSource.Source = vbdadvertisementEntities.contractlogoes.Where(q => q.id.Equals(3));
それはうまくいきます!
では、なぜ FirstOrDefault() がエラーを引き起こすのでしょうか?
この場合、FirstOrDefault() を使用する必要がありますか? FirstOrDefault() を使用すると、アプリの実行が速くなりますか?
ps : 編集フォームを設計しているので、単一のアイテムをロードしたいだけです。