实体框架 – Asp.Net Web API错误:’ObjectContent`1’类型无法将内容类型’application/xml; charset = utf-8′

前端之家收集整理的这篇文章主要介绍了实体框架 – Asp.Net Web API错误:’ObjectContent`1’类型无法将内容类型’application/xml; charset = utf-8′前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最简单的例子,我收集并尝试通过Web API输出
// GET api/items
public IEnumerable<Item> Get()
{
    return MyContext.Items.ToList();
}

我得到错误

Object of type

‘System.Data.Objects.ObjectQuery`1[Dcip.Ams.BO.EquipmentWarranty]’
cannot be converted to type

‘System.Data.Entity.DbSet`1[Dcip.Ams.BO.EquipmentWarranty]’

这是一个很常见的错误,与新的代理,我知道,我可以通过设置:

MyContext.Configuration.ProxyCreationEnabled = false;

但是,这违背了我正在努力做的很多目的。有没有更好的办法?

解决方法

我建议仅在不需要或导致麻烦的地方禁用代理创建。您不必全局禁用它,您只需通过代码禁用当前的数据库上下文…
[HttpGet]
    [WithDbContextApi]
    public HttpResponseMessage Get(int take = 10,int skip = 0)
    {
        CurrentDbContext.Configuration.ProxyCreationEnabled = false;

        var lista = CurrentDbContext.PaymentTypes
            .OrderByDescending(x => x.Id)
            .Skip(skip)
            .Take(take)
            .ToList();

        var count = CurrentDbContext.PaymentTypes.Count();

        return Request.CreateResponse(HttpStatusCode.OK,new { PaymentTypes = lista,TotalCount = count });
    }

这里我只是在这个方法中禁用了ProxyCreation,因为每个请求都创建了一个新的DBContext,因此我只禁用了这种情况下的ProxyCreation。希望它有帮助

猜你在找的asp.Net相关文章