レガシ データベースを指すエンティティが 2 つあります。メイン エンティティは、Include を使用してセカンダリ エンティティを取り込み、データを熱心にロードする必要があります。残念ながら、追加のフィールド データが適切に選択されていることが SQL プロファイリングで示されていても、エンティティは null になります。
部品エンティティ
[Table("pt_mstr")]
public class QadPart
{
public QadPart()
{
this.PartGroup = new QadPartGroup();
}
[Column("pt_part", Order = 0), Key]
public string Number { get; set; }
[Column("pt_group", Order = 0), ForeignKey("PartGroup")]
public string PartGroupCode { get; set; }
[Column("pt_domain", Order = 1), ForeignKey("PartGroup"), Key]
public string Domain { get; set; }
public QadPartGroup PartGroup { get; set; }
}
パート グループ エンティティ
[Table("PartGroups")]
public class QadPartGroup
{
[Column("code_value", Order = 0), Key]
public string Code { get; set; }
[Column("code_cmmt")]
public string Name { get; set; }
[Column("code_domain", Order = 1), Key]
public string Domain { get; set; }
}
part エンティティの pt_mstr は SQL テーブルです。partgroup エンティティの PartGroups は、SQL ビューです。
part エンティティには複合キー (pt_part、pt_domain) があります。partgroup エンティティには、複合キー (code_value、code_domain) があります。
Linq クエリ
var data = db.Parts.Include<QadPart>(a => a.PartGroup).Where(a => a.Domain == domain && a.Status == "AC").ToList();
SQL プロファイルは、Include からの PartGroup フィールドを含むすべてのフィールドが返されていることを示しています。
「データ」変数 (リスト) を調査すると、パーツ関連のフィールド (PartGroupCode を含む) が入力されますが、PartGroup (主に PartGroup.Name と PartGroup.Code を含む) は null です。
PS - これが関連しているとは思いませんが、WebApi も使用していますが、この動作は WebApi の外部でも発生します。
あなたが提供できるどんな助けも大歓迎です。