3

レガシ データベースを指すエンティティが 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 の外部でも発生します。

あなたが提供できるどんな助けも大歓迎です。

4

0 に答える 0