我有一个MVC5应用程序,我在其中包含了WebAPI。我测试了它,它适用于简单的字符串和东西。然后我尝试做这样的事情:
public Business Get(string id)
{
return db.Businesses.Where(b => b.Id == id).FirstOrDefault();
}
我得到了上面提到的错误。请注意,Business是我在models文件夹中创建的自定义类型。在我的WebApiConfig
文件中,我有类似的内容:
var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
formatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
知道如何解决问题吗?
修改
更多错误消息:
键入' System.Data.Entity.DynamicProxies.Business_32C47B90BA261D075748CEC009DA52F8C6D893134F8D33848A7F856F76F50D55' 与数据合同名称 ' Business_32C47B90BA261D075748CEC009DA52F8C6D893134F8D33848A7F856F76F50D55:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 不是预期的。如果是的话,请考虑使用DataContractResolver 使用DataContractSerializer或添加静态未知的任何类型 已知类型的列表 - 例如,通过使用KnownTypeAttribute 属性或将它们添加到传递给的已知类型列表中 serializer.System.Runtime.Serialization.SerializationException
答案 0 :(得分:1)
我找到了解决方案。我只需要包含这行代码:
DbContext.Configuration.ProxyCreationEnabled = false;