有两个实体指向遗留数据库,主要实体应该使用 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 之外。
非常感谢您提供的任何帮助。