Javascript breezejs:未将导航属性添加到实体

Javascript breezejs:未将导航属性添加到实体,javascript,breeze,Javascript,Breeze,我已经配置了我的WebAPI ODATA服务(使用5.0.0-rc1获得$expand和$select支持),除了导航属性之外,一切似乎都很好 元数据确实包含我的导航属性(委托书上的OpenPositions): 那么我的问题如下: function search() { var query = breeze.EntityQuery.from("Mandates").expand("OpenPositions").inlineCount(); return m

我已经配置了我的WebAPI ODATA服务(使用5.0.0-rc1获得$expand和$select支持),除了导航属性之外,一切似乎都很好

元数据确实包含我的导航属性(委托书上的OpenPositions):

那么我的问题如下:

function search() {       
    var query =  breeze.EntityQuery.from("Mandates").expand("OpenPositions").inlineCount();

    return manager.executeQuery(query.using(service)).then(function (result) {
        logger.info(result);
    }).fail(function (error) {
        logger.error(error);
    });
}
WebAPI控制器:

[Queryable(AllowedQueryOptions= AllowedQueryOptions.All)]
    public override IQueryable<Mandate> Get()
    {
          return new List<Mandate>() { new Mandate() { 
            Id = 1, 
            PolicyNumber = "350000000",
            OpenPositions = new List<OpenPosition>(){ 
                new OpenPosition(){ Id = 1, Amount = 2300, Mandate_Id = 1 },
                new OpenPosition(){ Id = 2, Amount = 2100, Mandate_Id = 1 }
            }},
            new Mandate() { 
                Id = 2, 
                PolicyNumber = "240000000" ,
                OpenPositions = new List<OpenPosition>(){ 
                new OpenPosition(){ Id = 3, Amount = 2500, Mandate_Id = 2 },
                new OpenPosition(){ Id = 2, Amount = 2100,  Mandate_Id = 2}
            }

            } }.AsQueryable<Mandate>();
    }
**[编辑]**

出于某些原因,[ForeignKey(“委托书”)]属性在编译时被删除(我认为这是因为生成了模型类。我找到了一个解决方法,元数据现在包含在OpenPositions中委托的外键MandateId:


必须定义外键,因为关联需要FKs

[编辑]

您的双向关联应该如下所示:

 public class Mandate
{
    public int Id { get; set; }
    public string PolicyNumber { get; set; }

    public virtual  ICollection<OpenPosition> OpenPositions { get; set; }
}

public class OpenPosition {
    public int Id { get; set; }
    public decimal Amount { get; set; }

    public int MandateId { get; set; }
    public Mandate Mandate {get; set; }
}
公共类授权
{
公共int Id{get;set;}
公共字符串PolicyNumber{get;set;}
公共虚拟ICollection OpenPositions{get;set;}
}
公开课空缺{
公共int Id{get;set;}
公共十进制数{get;set;}
public int MandateId{get;set;}
公共授权{get;set;}
}

谢谢。我已经添加了外键(请参阅更新我的帖子),但问题仍然存在。我在这里做错了什么吗?看起来你有单向关系。你是否使用Fluent API正确设置了它?我完全使用OpenAccess DataBase First代码生成器重建了我的模型。我有双向关系(委托书->未平仓和未平仓->委托书)。现在,我不再返回上面那样的IList结果,而是返回OpenAccess上下文。然而,breezejs仍然不知道我的导航属性。对我来说,这看起来像个bug。我在使用breeze WebApi控制器时使其工作。问题发生在我停止使用该控制器时。一定是发生了其他事情。我已经我的答案显示了双向关联应该是什么样子,并且应该没有问题。如果您创建了一个复制问题的小型解决方案,我可以进一步查看。请确保它是一个小型解决方案-将其发送给breeze-support@ideablade.com.Your代码看起来和我的差不多。我会试着把下周重新开始。
 public class Mandate
{
    public int Id { get; set; }
    public string PolicyNumber { get; set; }

    public virtual  ICollection<OpenPosition> OpenPositions { get; set; }
}

public class OpenPosition {
    public int Id { get; set; }
    public decimal Amount { get; set; }

    public int MandateId { get; set; }
    public Mandate Mandate {get; set; }
}