加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

实体框架 – Asp.Net Web API错误:’ObjectContent`1’类型无法

发布时间:2020-12-15 18:46:55 所属栏目:asp.Net 来源:网络整理
导读:最简单的例子,我收集并尝试通过Web API输出: // GET api/itemspublic IEnumerableItem Get(){ return MyContext.Items.ToList();} 我得到错误: Object of type ‘System.Data.Objects.ObjectQuery`1[Dcip.Ams.BO.EquipmentWarranty]’ cannot be converte
最简单的例子,我收集并尝试通过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。希望它有帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读