繁体   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