0

我已将客户端库和服务器 web api dll 更新到最新版本。

现在,每当我对查询进行扩展时,都会出现这种错误:

unable to locate property: Mandate on type: MandateHistory:#Dom.DirectDebit

查询是:

  var query = breeze.EntityQuery.from("MandatesHistory")
        .where("Mandate.Id", "==", mandatId).expand("Mandate"); 

    return manager.executeQuery(query.using(service));

如果我降级到 1.3.3(仅限客户端库),一切正常。

我想尝试 1.3.4 或 1.3.5 但我在网站上找不到它们....

1.3.3 和 1.3.6 之间的哪些变化可能会破坏我的应用程序?

编辑

这是导致问题的代码:

在 1.3.6 中,在函数 parseCsdNavProperty 中,添加了以下代码:

 var constraint = association.referentialConstraint;
    if (!constraint) {
        // TODO: Revisit this later - right now we just ignore many-many and assocs with missing constraints.
        return;
        // Think about adding this back later.
        //if (association.end[0].multiplicity == "*" && association.end[1].multiplicity == "*") {
        //    // many to many relation
        //    ???
        //} else {
        //    throw new Error("Foreign Key Associations must be turned on for this model");
        //}
    }

基本上,对于导航属性 MandateHistory.Mandate,没有找到任何约束,所以代码只是返回。这是我的问题的原因。

在版本 1.3.3 中,没有检查约束,因为首先有以下检查在我的情况下返回 false(isScalar 为 false):

 if (toEnd && isScalar) {
        var constraint = association.referentialConstraint;
        if (constraint) {
            var principal = constraint.principal;
            var dependent = constraint.dependent;
            var propRefs;
            if (csdlProperty.fromRole === principal.role) {
                propRefs = toArray(principal.propertyRef);
            } else {
                propRefs = toArray(dependent.propertyRef);
            }
            // will be used later by np._update
            fkNamesOnServer = propRefs.map(__pluck("name"));
        }
    }

微风队能调查一下吗?

解决方案

按照 Jay 的建议,必须更改 .net 模型以明确设置 MandateHistory 和 Mandate 之间的外键关联:

 public class MandateHistory
 {
    [ForeignKey("Mandate")]
    public int Mandate_Id { get; set; }

    public virtual Mandate Mandate { get; set; }
 }
4

1 回答 1

0

我的猜测是您的模型中缺少参考约束。即实体框架认为您没有公开外键。请参阅实体框架中的外键

Breeze 需要外键来执行它的自动对象链接逻辑。

这也在这里描述:微风导航属性

于 2013-07-16T17:38:08.163 回答