繁体   English   中英

微风-自我参照实体

[英]Breeze - self referencing entity

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

            });

但是查询总是失败,并显示错误消息“ expected object”

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

有人有主意吗?

谢谢 !

Breeze需要一个外键来修正实体之间的关系,而您在Subject类定义中将其遗漏了:

[DataMember]
public System.Nullable<int> ParentId { get; set; }

或者,如果您使用的是非常规命名,请确保将ForeignKey标记添加到导航中:

[DataMember]
[ForeignKey("FKParentId")]
public Subject Parent { get; set; }

您也可以通过Fluent接口定义它。 您可以在http://msdn.microsoft.com/zh-cn/data/hh134698.aspx上找到更多相关信息。

谢谢 !

我添加了: [DataMember] public System.Nullable<int> ParentId { get; set; } [DataMember] public System.Nullable<int> ParentId { get; set; }

现在可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM