簡體   English   中英

水療中心如何訪問祖父母實體?

[英]spa upshot how to access grandparent entity?

我正在嘗試使用以下基本模型的SPA:

public class Owner
{
    public int OwnerId { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual ICollection<TodoItem> TodoItems { get; set; }
}

public class TodoItem
{
    public int TodoItemId { get; set; }
    [Required]
    public string Title { get; set; }
    public bool IsDone { get; set; }

    public int OwnerId { get; private set; }
    public virtual Owner Owner { get; set; }
    public virtual ICollection<ActionItem> ActionItems { get; set; }
}

public class ActionItem
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int TodoItemId { get; private set; }
    public virtual TodoItem TodoItem { get; private set; }
}

在我看來,我嘗試了以下方法:

<div data-bind="foreach: ActionItem">
<div data-bind="attr:{id:Id}">
    <span data-bind="text: Name"></span><br /> <!-- works -->
    <span data-bind="text: TodoItem().Name"></span><br /> <!-- doesn't work -->
    <span data-bind="text: TodoItem().Owner().Name"></span> <br /> <!-- doesn't work -->
</div>
</div>

我還嘗試將包含所有者名稱的計算屬性添加到ActionItem中:

public string OwnerName
{
get { return this.TodoItem.Owner.Name; }
}

並致電:

<span data-bind="text: OwnerName"></span><br /> <!-- doesn't work -->

但是如果我添加其他靜態字符串並手動設置值:

public string SomethingElse { get; set; }

然后工作正常:

<span data-bind="text: SomethingElse"></span><br /> <!-- works -->

我究竟做錯了什么?

干杯

如Obiwan007所建議,通過將反向引用設置為NULL,可以解決序列化問題。 如果使用的是Code First,則還可以應用[IgnoreDataMember]屬性。

Upshot僅使父實體可見,而使其子實體不可見。 因此,當使用內置映射功能時,無法將數據綁定到子實體。

解決方案是使用Javascript手動創建客戶端實體,然后自己映射它們。 我針對另一個問題發布了可行的解決方案: https : //stackoverflow.com/a/10010695/1226140

嘗試使用$ parent變量:

    <span data-bind="text: $parent.Name"></span> <br />
    <span data-bind="text: TodoItem().$parent.Name"></span> <br />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM