【发布时间】:2015-08-03 11:29:58
【问题描述】:
我的 web api 项目中有一个 Report 类:
[KnownType(typeof(Employee))]
[DataContract]
public class Report
{
[DataMember]
public int Id { get; set; }
public string ManagerId { get; set; }
public string EmployeeId { get; set; }
[DataMember]
public virtual Employee Manager { get; set; }
[DataMember]
public virtual Employee Employee { get; set; }
}
如果virtual 在方法签名中,我会收到以下异常:
类型 'System.Data.Entity.DynamicProxies.Report_1FFC700B8A805A61BF97A4B9A18D60F99AAA83EE08F4CA2E2454BADA9737B476' 与数据合同名:预计不会 'Report_1FFC700B8A805A61BF97A4B9A18D60F99AAA83EE08F4CA2E2454BADA9737B476 http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies'。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。
如果不是一切正常。我错过了什么?
已编辑以包含对象检索代码
ApiController
[ResponseType(typeof(IEnumerable<Report>))]
public IHttpActionResult GetLogs([FromUri] string id)
{
return Ok(_loggingService.GetReportsByEmployeeId(id));
}
服务
public IQueryable<Report> GetReportsByEmployeeId(string employeeId)
{
return _reports.GetAll().Where(x => x.ManagerId.Equals(employeeId) || x.EmployeeId.Equals(employeeId));
}
存储库
public IQueryable<T> GetAll()
{
return _dbSet;
}
【问题讨论】:
标签: c# entity-framework asp.net-web-api