在WCF Web API Preview 6中,在我的一个服务中,我使用了直接来自EF 4.2的对象,我收到了以下错误:
无法序列化成员DataAccess.SqlServer.Resort.AccommProperties 类型 System.Collections.Generic.ICollection`1 [DataAccess.SqlServer.AccommProperty, DataAccess,版本= 1.0.4350.30311,文化=中立, PublicKeyToken = null]]因为它是一个接口。
这是我服务的代码:
[WebGet]
public HttpResponseMessage<IQueryable<DataAccess.SqlServer.Resort>> GetAll() {
var resorts = _resortRepo.GetAll(
ApprovalStatus.Approved
);
var resortsResponse =
new HttpResponseMessage<IQueryable<DataAccess.SqlServer.Resort>>(resorts);
resortsResponse.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddHours(6));
return resortsResponse;
}
以下是我试图在上面公开的度假村课程:
public partial class Resort
{
public Resort()
{
this.AccommProperties = new HashSet<AccommProperty>();
this.ResortDetails = new HashSet<ResortDetail>();
}
public int ResortID { get; set; }
public int DestinationID { get; set; }
public System.Guid ResortGUID { get; set; }
public Nullable<int> SecondaryID { get; set; }
public string ResortName { get; set; }
public Nullable<bool> IsApproved { get; set; }
public string ResortType { get; set; }
public virtual ICollection<AccommProperty> AccommProperties { get; set; }
public virtual Destination Destination { get; set; }
public virtual ICollection<ResortDetail> ResortDetails { get; set; }
}
Like the error message says, I can't serialize an interface。但是我应该做什么来做我的所有EF对象呢?
答案 0 :(得分:0)
您可以使用Web API Contrib中的JSON.NET Formatter并使用TypeNameHandling settings of JSON.NET来使用您的具体类型而不是接口。
更新: 您也可以尝试SharpSerializer。