簡體   English   中英

自動填充導航屬性?

[英]Populate navigation properties automatically?

我有這個-simplified-模型類:

public class Transaction
{
    public string Id { get; set; }
    public virtual UserResource Resource { get; set; }
}

和一個Mvc Web Api控制器:

// POST api/values
[HttpPost]
public void Post([FromBody]Transaction transaction)
{
}

我的請求正文是這樣的:

{"Id":"5520AEB9-DAD8-4C85-80A7-3257931B9790","ResourceId":"118547FC-0B3A-4816-820C-93BF2BA1BF14"}

在post方法中,transaction.Resource為null。 而且我不知道如何使用我傳遞的資源ID來填充它...

到目前為止我嘗試過的是:

  1. 添加public string ResourceId {get; set;} public string ResourceId {get; set;}並將其標記為Transaction中的ForeignKey ...->不變
  2. 在請求中,將ResourceId參數更改為“ Resource”:{Id:“ ..”}-> transaction.Resource不再為null,但它沒有查詢Resource表以填充任何內容...
  3. 將資源標記為虛擬或不虛擬(延遲加載或渴望)->不變

有想法嗎?

您沒有將Resource對象傳遞給您的API,您必須要么傳遞它,要么讓API弄清楚它是什么,我不建議后者。

因此,由於它是Entity Framework 7,您目前不能使用延遲加載,因為它尚未(在框架中)。

當前的路線圖將其列為高優先級,並且聲明:

這些功能是高度優先的功能,但我們認為EF7對於沒有這些功能的絕大多數應用程序來說將是一個引人注目的版本。

因此,在查詢中,您需要手動包括所有導航屬性,例如:

var data = context.Transactions
    .Include(t => t.Resource)
    .Where(t => t.Id == 1);

暫無
暫無

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

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