次の SQL テーブルを 2 つのエンティティ (同じプロパティを持つ) にマップしています。
Two Tables look like:
MasterPartNumbers (parent) many -> many MasterPartsLists (children)
(PK) pnID (PK)(FK) parentPnID
pn (PK) pnID
pnDesc qty
price
isAssembly
注: これらの SQL テーブルは単にモデルに追加されただけで、マッピングはそのまま残されています。そのため、それぞれがナビゲーション プロパティとしてプライマリ/外部キー プロパティを持っています。
バインディングObservableCollection
として使用しているものがあり、次のようになります。ItemsSource
public ObservableCollection<MasterPartNumber> SelectedAssyBOMLineItems
{
get
{
if (this._selectedTopLevelAssyPN != null)
{
var bomItems = (from childMpn in this._context.MasterPartNumbers
from childMpl in this._context.MasterPartsLists
where childMpl.parentPnID == this._selectedTopLevelAssyPN.pnID //this._selectedTopLevelAssyPn.pnID is simply the selected "Parent" part number in an adjacent ListBox on my View (usercontrol). It is of type MasterPartNumber
where childMpl.pnID == childMpn.pnID
select childMpn
);
return this._selectedAssyBOMLineItems = new ObservableCollection<MasterPartNumber>(bomItems);
}
return this._selectedAssyBOMLineItems;
}
set
{
this._selectedAssyBOMLineItems = value;
RaisePropertyChanged("SelectedAssyBOMLineItems");
}
ここまでは順調です。MasterPartNumbers のすべてのプロパティにバインドでき、DataGrid のクエリによって提供される意図したデータのサブセットを確認しています。ただし、MasterPartNumbers.MasterPartsLists プロパティのいずれにもバインドできません。デバッガーをステップ実行すると、それらが読み込まれていることがわかります。私は何が欠けていますか?
クエリでa のようなものを使用してコンテキストから関連するエンティティを読み込むことで、バインド パスを {Binding MasterPartsList.isAssy} として参照するだけでよいと考えてい_context.MasterPartNumbers.Include("MasterPartsLists")
ました。
私が探している動作は、ここにある答えに似ています
前もって感謝します!:)