jjc*_*c99 4 asp.net-mvc asp.net-web-api
我在尝试使用Web API控制器时收到此错误.
Web API错误:'ObjectContent`1'类型无法序列化内容类型的响应正文
我的控制器中的代码如下
public IEnumerable<Student> GetAllStudents()
{
var allstudents = unitOfWork.StudentRepository.Get(includeProperties: "Groups");
return allstudents;
}
public Student GetStudentByID(Guid id)
{
return unitOfWork.StudentRepository.GetByID(id);
}
Run Code Online (Sandbox Code Playgroud)
我的'学生'课程如下
public partial class Student
{
public Student()
{
this.Groups = new HashSet<Group>();
}
public System.Guid StudentID { get; set; }
public string Surname { get; set; }
public string FirstName { get; set; }
public byte[] Timestamp { get; set; }
public virtual Course Course { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
两种方法都会导致相同的错误.
我内心的例外情况如下
:数据合同名称"Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A类型"System.Data.Entity.DynamicProxies.Student_4C97D068E1AD0BA62C3C6E441601FFB7418AD2D635F7F1C14B64F4B2BE32DF9A" http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies预计不会".考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.
我有一种感觉,我需要使用该KnownType属性,但我不确定如何实现它.
任何帮助,将不胜感激
如果您不需要代理类(System.Data.Entity.DynamicProxies.Student_4C97D068E1A...)提供的延迟加载的导航属性,则可以通过设置以下内容来禁用它们的生成:
unitOfWork.Configuration.ProxyCreationEnabled = false;
Run Code Online (Sandbox Code Playgroud)
如果你需要代理类怎么办是另一个问题.
请按照以下链接获取延迟加载和代理的详细概述:
我通常默认禁用延迟加载和代理,并在需要它们的特定代码块中启用一个或两个.
| 归档时间: |
|
| 查看次数: |
10369 次 |
| 最近记录: |