由于延迟加载,无法获取导航属性(外键数据)

时间:2015-02-25 06:44:41

标签: c# asp.net-mvc entity-framework asp.net-web-api

我用WebApi创建了MVC项目。它工作正常,但在简单控制器的详细信息方法中获取导航属性(外键数据)时遇到问题。我开始知道问题是由于LazyLoadingDBEntities构造函数中编写的public DBEntities():base("name=GJ5ServiceProviderDBEntities") { this.Configuration.LazyLoadingEnabled = false; }

this.Configuration.LazyLoadingEnabled = false;

当我从上面的代码中删除public async Task<ActionResult> Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } TableServiceProvider tableServiceProvider = await db.TableServiceProviders.FindAsync(id); if (tableServiceProvider == null) { return HttpNotFound(); } return View(tableServiceProvider); } 行时,它对MVC项目工作正常,那时我得到所有导航属性(外键数据)但是之后我到了下面WebApi的错误:

  

&#39; ObjectContent`1&#39;类型无法序列化响应正文   内容类型&#39; application / json;字符集= UTF-8&#39;

提取代码

{{1}}

那么有什么解决方案可以解决上述两个问题吗?

1 个答案:

答案 0 :(得分:1)

首先,我要感谢Frebin Francis对他的回应和帮助。

我可以在我的代码中添加一行来解决上述问题。db.Configuration.LazyLoadingEnabled = true;

此代码适用于我。

    public async Task<ActionResult> Details(int? id)
    {
        db.Configuration.LazyLoadingEnabled = true;
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        TableServiceProvider tableServiceProvider = await db.TableServiceProviders.FindAsync(id);
        if (tableServiceProvider == null)
        {
            return HttpNotFound();
        }
        return View(tableServiceProvider);
    }