小编Jac*_*ith的帖子

Web API和EF导致InvalidOperationException

我的解决方案中有3个项目:DataModel(EF),DAL,它与DataModel和MVC Web API的实体一起使用.

只有2个非常简单的实体:Person,Address,每个都有3个简单的字段,Person有Address字段(所以这2个实体是链接的)

在我的DAL中,我有一个方法可以返回所有Persons的列表,内容非常简单:return context.Person.ToList();

现在在我的Web API中,我只是调用GetPersons()方法并尝试返回它.在这里我得到一个奇怪的错误信息:

"发生了错误.","ExceptionMessage":"'ObjectContent`1'类型无法序列化内容类型'application/json; charset = utf-8'的响应主体.","ExceptionType":"系统. InvalidOperationException","StackTrace":null,"InnerException":{"$ id":"2","Message":"发生了错误.",...

当我调试时,我可以看到我确实拥有来自GetPersons方法的数据.我也googled并找到唯一的解决方案:我应该在我的启动配置中添加以下行:

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

我还尝试手动填充列表而不使用数据库:在这种情况下它可以工作.

我有一种强烈的印象,它与EF有关,但我不确切知道那是什么.

rest entity-framework asp.net-mvc-4 asp.net-web-api

4
推荐指数
1
解决办法
5153
查看次数