Javascript breezejs:未将导航属性添加到实体
我已经配置了我的WebAPI ODATA服务(使用5.0.0-rc1获得$expand和$select支持),除了导航属性之外,一切似乎都很好 元数据确实包含我的导航属性(委托书上的OpenPositions): 那么我的问题如下: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
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; }
}