使用浏览器中的URL获取数据时,可以看到相关数据,例如:

http://localhost/services.svc/Dinners(1)/RSVPs

在我的案例中,该列表列出了5个DinnerId = 1的RSVP,但是当我使用其他项目中的OData时,我只能检索Dinners,调试该应用程序会显示RSVP = 0,而应为5。

我通过向项目添加服务引用并通过非常简单的LINQ查询返回数据来使用服务:

public ActionResult Index()
        {
            var result = (from d in db.Dinners
                          select d);

            return View(result);
        }

知道为什么d.RSVPs = 0时应填充它吗?我正在使用EF(代码为先-后为ScottGu的帖子,针对Dinner和RSVP具有2个非常简单的POCO类。Dinner类具有RSVP的集合:public ICollection<RSVP> RSVPs { get; set; },并且RSVP类使用外键public int DinnerId { get; set; }指向Dinner以及晚餐类:public Dinner Dinner { get; set; }

谢谢。

最佳答案

您需要使用Expand()来访问返回的对象图的多个级别。

Loading Deferred Content (WCF Data Services)

就像是:

var result = (from d in db.Dinners.Expand("RSVPs")
                      select d);

关于asp.net-mvc - OData WCF数据服务-调用服务时不显示相关数据(通过外键),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3672720/

10-10 21:41