我使用Breeze通过我的ASP.NET web api应用程序执行查询时遇到了一些问题。
这是我想要请求的实体定义:
[Serializable]
[DataContract]
public class Subject
{
public Subject()
{
Subjects = new List<Subject>();
}
[DataMember]
public int Id { get; set; }
[DataMember]
public String Name { get; set; }
[DataMember]
public Subject Parent { get; set; }
[DataMember]
public IList<Subject> Subjects { get; set; }
}
这是我的datacontext.js文件中的查询
var query = EntityQuery.from("Subjects");
manager.executeQuery(query)
.then(function (data) {
// do something with data.results
})
.fail(function (error) {
});
但查询总是失败并显示错误“预期对象”
对其他“简单”实体的所有其他查询都可以正常工作。 如果我从我的主题实体中删除属性“父母”和“主题”, 查询有效。
有没有人有想法?
谢谢!
答案 0 :(得分:1)
Breeze需要一个外键才能修复实体之间的关系,并且你在Subject类定义中缺少它:
[DataMember]
public System.Nullable<int> ParentId { get; set; }
或者,如果您使用的是非常规命名,请务必将ForeignKey标记添加到导航中:
[DataMember]
[ForeignKey("FKParentId")]
public Subject Parent { get; set; }
您也可以通过Fluent Interface定义它。您可以在http://msdn.microsoft.com/en-us/data/hh134698.aspx找到更多信息。
答案 1 :(得分:1)
谢谢!
我补充说:
[DataMember]
public System.Nullable<int> ParentId { get; set; }
现在工作正常。