我用WebApi创建了MVC项目。它工作正常,但在简单控制器的详细信息方法中获取导航属性(外键数据)时遇到问题。我开始知道问题是由于LazyLoading
在DBEntities
构造函数中编写的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}}
那么有什么解决方案可以解决上述两个问题吗?
答案 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);
}