我遇到了breeze元数据的问题。我开发了一个带微风控制器的系统。我在元数据中看到了我的模型,包括所有导航属性。当我从服务器获取数据时,我看到我的对象填充了期望的字段,但客户端的反序列化对象只包含没有集合的简单字段。
我在服务器中看到了元数据和返回的对象,如下所示:
public partial class DesignType
{
public DesignType()
{
this.Product = new HashSet<Product>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public virtual ICollection<Product> Product { get; set; }
public virtual VisionType Vision { get; set; }
}
public partial class VisionType
{
public VisionType()
{
this.DesignType = new HashSet<DesignType>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<DesignType> DesignType { get; set; }
}
以下是查询代码:
var query = breeze.EntityQuery.from("Designs");
breeze.manager.executeQuery(query).then(function (queryResult) {
callback(queryResult.results)
}).fail(function (queryFailed) {
error(queryFailed);
});
结果对象仅包含简单数据属性,并忽略属性ICollection Product and Vision。
任何想法。 提前谢谢......
答案 0 :(得分:1)
您的查询只询问根类型DesignType
,因此应该返回所有内容。我假设你的服务器端方法没有返回相关的Product
和Vision
实体(它可以做,但我打赌你没有做到这一点)。
所以Breeze正在做你所要求的。
如果客户想要相关实体,它可以使用expand子句来询问它们:
breeze.EntityQuery.from("Designs")
.expand('Products, Vision')
查看the documentation on queries and expand
如果我理解您的评论,(a)您现在明白为什么您没有看到Product
,因为您既没有在客户端上请求产品也没有将它们从服务器中推出,(b)您的网络API是包括相关的Vision
实例和(b)您在查询的JSON响应中看到Vision
数据。
剩下的谜团是someDesignType.Vision
返回null的原因。
请阅读"Query response debugging",特别关注参考导航属性和Product
上指向DesignType
的外键属性。如果你仍然感到神秘,请告诉我们Vision
导航属性的细节如何解释。