1 対 1 の関係を持つ 2 つのテーブルがあります。LINQ で .Include() を使用して、子テーブル エンティティをプロパティに渡そうとしています。これにより、子テーブル フィールドをフィールドと共にグリッドにバインドできます。親テーブルから。もともとはこのようにうまく動作し、グリッドにバインドできますが、BUGroupBuildings テーブルからしか結果を取得できません。また、vwBuisnessUnits テーブルのフィールドにバインドする必要があります。
public IQueryable<BUGroupBuilding> GetBusinessUnitsBasedOnGroupID(int i)
{
var result = from d in this.ObjectContext.BUGroupBuildings
join b in this.ObjectContext.vwBusinessUnits on d.BU equals b.BU
where d.BUGroupID == i
orderby d.BU ascending
select d;
return result;
}
Includeを使用して子テーブル フィールドを戻すように切り替えると、エラーが発生します。
public IQueryable<BUGroupBuilding> GetBusinessUnitsBasedOnGroupID(int i)
{
var result = from d in this.ObjectContext.BUGroupBuildings
.Include("vwBuisnessUnits")
select d;
result = result.Where(w => w.BUGroupID == i).OrderBy(o => o.vwBusinessUnit.BU);
return result;
}
エラー:
クエリ 'GetBusinessUnitsBasedOnGroupID' の読み込み操作が失敗しました。指定されたインクルード パスが無効です。EntityType 'EQUITYDWModel.BUGroupBuilding' は、'vwBuisnessUnits' という名前のナビゲーション プロパティを宣言していません
これが私のエンティティです
必要な [Include] をメタデータに追加しました。
[MetadataTypeAttribute(typeof(BUGroupBuilding.BUGroupBuildingMetadata))]
public partial class BUGroupBuilding
{
internal sealed class BUGroupBuildingMetadata
{
// Metadata classes are not meant to be instantiated.
private BUGroupBuildingMetadata()
{
}
public string BU { get; set; }
[Include]
public BUGroup BUGroup { get; set; }
public int BUGroupBuildingsID { get; set; }
public Nullable<int> BUGroupID { get; set; }
[Include]
public vwBusinessUnit vwBusinessUnit { get; set; }
}
}