【发布时间】:2014-02-08 01:40:09
【问题描述】:
我有一个 API 控制器,它可以检索运行良好的文章列表。我为我的文章创建了一个 DTO 类,供我的 API 控制器使用,其中包括相关对象(标签)的列表。
以下代码运行良好并检索我的文章列表:
public class ArticleDTO
{
public int ArticleID { get; set; }
public string Title { get; set; }
public DateTime DatePublished { get; set; }
[AllowHtml]
public string Body { get; set; }
public ICollection<Tag> Tags { get; set; }
}
还有我的 API 控制器(请注意,我没有在 linq 查询中包含标签):
private IQueryable<ArticleDTO> MapArticles()
{
return from p in db.Articles.Include("Tags")
select new ArticleDTO() {
ArticleID=p.ArticleID,
Title = p.Title,
Subheading = p.Subheading,
DatePublished = p.DatePublished,
Body = p.Body,
};
}
public IEnumerable<ArticleDTO> GetArticles()
{
return MapArticles().AsEnumerable();
}
但是,如果我包含标签:
select new ArticleDTO() {
ArticleID=p.ArticleID,
Title = p.Title,
Subheading = p.Subheading,
DatePublished = p.DatePublished,
Body = p.Body,
Tags = Tags
};
然后我收到以下消息:
“ObjectContent`1”类型未能序列化内容类型“application/xml;”的响应正文; charset=utf-8'。
类型 'System.Data.Entity.DynamicProxies.Tag_5E08D5046E177BA781B97E38A79F1E2BCC3300645A0E505002547644006F116E' 与数据合同名:预计不会 'Tag_5E08D5046E177BA781B97E38A79F1E2BCC3300645A0E505002547644006F116E http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies'。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。
我不知道这意味着什么或如何解决它,所以非常感谢任何帮助!
谢谢...
【问题讨论】:
标签: c# asp.net-mvc entity-framework