【发布时间】:2014-04-27 17:38:20
【问题描述】:
我的解决方案中有 3 个项目:DataModel (EF)、与 DataModel 中的实体和 MVC Web API 一起使用的 DAL。
只有 2 个非常简单的实体:Person、Address,每个实体都有 3 个简单字段,Person 有 Address 字段(因此这两个实体是链接的)
在我的 DAL 中,我有一个方法可以返回所有 Persons 的列表,内容非常简单:return context.Person.ToList();
现在在我的 Web API 中,我只是调用 GetPersons() 方法并尝试返回它。 在这里我收到一条奇怪的错误消息:
"发生错误。","ExceptionMessage":"'ObjectContent`1' type 未能序列化内容类型的响应正文 '应用程序/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"$id":"2","Message":"An 发生错误。",...
当我调试时,我可以看到我确实有来自我的 GetPersons 方法的数据。 我也用谷歌搜索并找到了唯一的解决方案:我应该在我的启动配置中添加以下几行:
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
但这无济于事。
我还尝试在不使用数据库的情况下手动填充列表:在这种情况下它可以工作。
我有一个强烈的印象,它与 EF 有关,但我不知道具体是什么。
【问题讨论】:
标签: entity-framework asp.net-mvc-4 rest asp.net-web-api