【发布时间】:2012-12-08 23:16:33
【问题描述】:
在 Web Api 项目中,当我输入 url localhost:[portnumber]/api/os,我得到包含错误的长 XML 文件,这里是异常消息:
类型 'System.Data.Entity.DynamicProxies.CollegeCourse_C7F37B1980970AF17607E96F17DFE50E3A680141BF8228EEA7D39A9150498388' 与数据合同名 'CollegeCourse_C7F37B1980970AF17607E96F17DFE50E3A680141BF8228EEA7D39A9150498388://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies:HTTP' 不期望。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。
但是当我输入 url localhost: [portnumber]/api/role 一切都很好,这里是代码:
操作系统:
public class UserOS
{
[Key]
[HiddenInput(DisplayValue = false)]
public int UserOSId { get; set; }
public Guid UserId { get; set; }
public string OSType { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
}
角色:
public class UserRole
{
[Key]
[HiddenInput(DisplayValue = false)]
public int RoleId { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
}
角色和操作系统的 API 控制器是相似的,所以我将只粘贴角色:
private CompeteDataBase _competeDataBase = new CompeteDataBase();
public IEnumerable<UserRole> GetAllRoles()
{
return _competeDataBase.UserRoles.AsEnumerable();
}
编辑
使用 DTO 的方法是否正确?
【问题讨论】:
标签: asp.net-mvc entity-framework asp.net-web-api