【问题标题】:Asp.net MVC5 with E.F returns IQueryable or IEnumerable?带有 E.F 的 Asp.net MVC5 返回 IQueryable 或 IEnumerable?
【发布时间】:2016-10-26 05:37:31
【问题描述】:

大家好,请帮助我了解 asp.net mvc5 和 e.f 6 默认使用 IQueryable 还是 IEnumerable?我想使用 IQueryable 工作,因为它最适合底层数据库。我正在使用 LINQ 到实体方法和 var 关键字来保存 linq 结果。默认情况下,我的模型类是 public className {get; set} 所以这里返回 IQueryable 或 IEnumerable? 请帮助我

【问题讨论】:

    标签: asp.net-mvc ienumerable


    【解决方案1】:

    DbContext 是您在使用 EF6 时访问数据存储的上下文。您可以使用DbSet<TEntity> 类型的属性或Set<TEntity> 方法访问DbContext 实例上的模型(表),该方法也返回DbSet<TEntity>。 DbSet<TEntity> 实现抽象类 DbQuery<TEntity> 实现接口:

    • DbQuery<TEntity>
    • IDbSet<TEntity>
    • IQueryable<TEntity>
    • IEnumerable<TEntity>
    • IQueryable
    • IEnumerable。

    最后,如果您还查看IQueryable 的定义,您会发现它是IEnumerable 的扩展。还有IQueryable<TEntity> 实现IEnumerable<TEntity>。

    【讨论】:

    • 你是对的,但我怎么知道它返回的是 IQueryable 或 IEnumerable
    • @AijazAli - 请定义it。你在说什么返回IQueryable or IEnumerable?
    • var addressesList = (来自 db.address 中的地址 where (addresses.full_address.StartsWith(q.Trim()) || q == null ||addresses.full_address.EndsWith(q.Trim( ))) orderbyaddresses.id 选择地址);这里addressList的返回类型是IQueryable还是IEnumerable?
    • @AijazAli - 结果是一个实现 IQueryable<Address> 的对象(假设 Address 是您在 select 子句中选择的实例的类型)。由于IQueryable<Address> 扩展了IEnumerable<Address>,它也是IEnumerable<Address> 接口的实现。
    • @AijazAli - 另见Queryable.Select 文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    相关资源
    最近更新 更多