1

我在使用 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) {

            });

但查询总是失败,并显示“预期对象”错误

其他“简单”实体上的所有其他查询都可以正常工作。如果我从我的主题实体中删除属性“父”和“主题”,则查询有效。

有人有想法吗?

谢谢 !

4

2 回答 2

1

谢谢 !

我补充说: [DataMember] public System.Nullable<int> ParentId { get; set; }

现在工作正常。

于 2013-06-12T06:37:00.447 回答
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找到更多相关信息。

于 2013-06-07T18:53:21.607 回答