【问题标题】:Breeze .expand fetching null for navigation propertyBreeze .expand 为导航属性获取 null
【发布时间】:2013-11-22 16:32:56
【问题描述】:
   public class Denial
{
    [Key]
    public string DenialCd { get; set; }
    [Required]
    public string DenialDesc { get; set; }

    public ICollection<CaseDenial> CaseDenials { get; set; }
}


public class CaseDenial
{
    [Key]
    public int ID { get; set; }

    [Required]
    public string DenialCd { get; set; }

    [Required]
    public int CaseId { get; set; }

    [ForeignKey("DenialCd")]
    public Denial Denial { get; set; }
    [ForeignKey("CaseId")]
    public Case Case { get; set; }
}

      var query = EntityQuery.from('CaseDenials')
            .where("CaseId", "==", caseID)
            .expand("Denial")
            .orderBy("DenialCd").inlineCount();

CaseDenial 表链接到 Denial 表的 DenialCd 列。上面的微风查询在从 CaseDenials 获取记录时为导航属性“Denial”带来了 null。

【问题讨论】:

    标签: breeze expand


    【解决方案1】:

    我的猜测是您的 EF 模型没有“正确”归因。我会确认您可以执行服务器端实体框架“包含”操作。当您将客户端称为“扩展”时,这就是 Breeze 在幕后所做的事情。

    【讨论】:

    • .Include 也不起作用。这些属性与 .expand 正常工作的其他实体没有什么不同。
    • 我遇到了问题。因为 DenialCd 是一个字符串属性,所以 .expand 失败了。当我将其类型更改为 int 时,.expand 有效。但我希望该列是字符串类型。
    • 字符串应该没问题,但 pk 和 fk 必须是同一类型。
    • 是的,它们属于同一类型。
    【解决方案2】:

    据我所知,如果您有 1 次拒绝和许多案例拒绝,那么您应该查询如下:

    var query = EntityQuery.from('Denials')
        .where("CaseDenial.CaseId", "==", caseID)
        .expand("CaseDenial")
        .orderBy("DenialCd").inlineCount();
    

    这应该可行。您也可以尝试添加[InverseProperty("CaseDenials")]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多