3

有两个实体指向遗留数据库,主要实体应该使用 Include 接收辅助实体并急切加载数据。不幸的是,即使 SQL Profiling 演示了正确选择了附加字段数据,该实体仍为 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; }
}

PartGroup 实体

[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; }
}

零件实体中的 pt_mstr 是一个 SQL 表。PartGroups 中的partgroup 实体是一个sql 视图。

零件实体有一个复合键(pt_part、pt_domain)。部件组实体有一个复合键(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)为空。

PS - 我不相信这是相关的,但我也在使用 WebApi,但是这种行为也发生在 WebApi 之外。

非常感谢您提供的任何帮助。

4

0 回答 0