2013-06-06 76 views
1

我使用Breeze通過我的ASP.NET web api應用程序執行查詢時遇到了一些問題。Breeze - 自引用實體

這裏是我想對我的請求實體定義:

[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) { 

      }); 

但查詢總是失敗與錯誤說「預期對象」

對其他「簡單」實體的所有其他查詢都可以正常工作。 如果我從我的主體實體中刪除屬性「父」和「主題」,則查詢起作用。

有沒有人有想法?

謝謝!

回答

1

微風需要一個外鍵,以便解決了實體之間的關係,你錯過了它在你的主題類定義:

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

或者,如果你正在使用非傳統的命名,可以肯定的將ForeignKey標籤添加到導航欄中:

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

您也可以通過Fluent界面對其進行定義。您將在http://msdn.microsoft.com/en-us/data/hh134698.aspx找到更多信息。

1

謝謝!

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

,現在工作得很好。