【问题标题】:Dapper.NET and IQueryableDapper.NET 和 IQueryable
【发布时间】:2015-02-18 05:09:57
【问题描述】:

是否有计划让 Dapper.net 与 IQueryable 接口兼容?如果没有,将 Dapper 与“表达式树”过滤器一起使用的解决方法是什么?

【问题讨论】:

  • 当然,关于 Dapper.Net 未来的问题最好放在 github 上?
  • 这是对外部库的功能请求。
  • 声望接近 1,000,您现在应该知道规则了。这完全是题外话。
  • 有些人可能会质疑这个问题是否符合规则,但它提出了我一直在寻找的问题,并且答案很有帮助。
  • 很好的问题,我将很快与 Dapper 合作,我的第一个问题是它是什么?我的第二个问题正是这个!

标签: c# lambda dapper


【解决方案1】:

不,没有计划这样做。 dapper 试图做的事情远非如此。到目前为止,我会说这是对立的。 Dapper core 试图成为那些热爱 SQL 的人的朋友。

【讨论】:

  • 很好的答案 - 如果有人不喜欢 SQL,还有其他解决方案,如 Entity Framework。
  • 我真的很喜欢 SQL(或者我真的很喜欢 SQL)。但我也喜欢早点得到报酬。拧 SQL,我想部署。是 SQLite 的实体框架!
  • 对不起 SQL,我真的是想搞砸 OData!原谅我,我要爬回你的怀抱!
【解决方案2】:

为此检查 Dapper.TQuery NuGet 包。

【讨论】:

    【解决方案3】:

    您可以使用System.Linq命名空间中的内置扩展方法AsQueryableIEnumerable获取IQueryable

    public IQueryable<Order> GetOrdersAsQuerable()
    {
        IEnumerable<Order> qry= GetOrders(); //using Query<T>
        //use the built-in extension method  AsQueryable in  System.Linq namespace
        return qry.AsQueryable();            
    }
    

    Example

    【讨论】:

    • 但它不是真正的 IQueryable 对象,因此没有任何好处。
    • 可以,但是可以使用IQueryable版本进行绑定,例如Asp.net中的GridView,有利于排序(不能使用IEnumerable版本进行排序)。
    • 当然,它假装是一个 IQueryable 对象,但我们都知道它不是,AFAIK 如果你模拟它,真正的 IQueryable 的好处并不适用,对吧?
    • IQueryable 的值,例如EF 或 linq2Sql 延迟执行到最后一分钟并生成发送到服务器的 sql。但是,Dapper 的情况有所不同。在 Dapper 中,您使用 Query&lt;POCO&gt; 在参数化 sql 语句中执行所有过滤器并获得 IEnumerable。您可以通过使用AsQuerable 获得额外的好处,并获得您必须在没有AsQuerable 的情况下实现它的动态排序。见:stackoverflow.com/questions/1106802/…
    • 这不是 JK 的预期行为。似乎想要。这只是一个演员,JK。似乎想要动态创建查询的 EF 行为。
    猜你喜欢
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多