【问题标题】:How Entity Framework commands by SQL commands? [closed]Entity Framework 命令如何通过 SQL 命令? [关闭]
【发布时间】:2021-02-18 23:46:17
【问题描述】:

如何在 C# 代码中使用 SQL Server 命令而不是实体框架执行此操作?

我只想了解 SQL Server 中的orderby 主题,我在 Entity Framework 中了解但在 SQL Server 中没有。谢谢!

using (KariyerDBEntities db = new DBEntities())
{
    IEnumerable<Product> ProductList = db.Products.ToList();

    var result = ProductList.OrderBy(e => e.Stock)
                            .ThenByDescending(e => e.Name)
                            .ThenByDescending(e => e.Price)
                            .ThenByDescending(e => e.CreateDate);

    foreach (var p in result)
    {
        Console.WriteLine(p.Id + "  " + p.Name + "  " + p.Price + "  " + p.Stock + "  " + p.CreateDate + "\n");
    }
}

【问题讨论】:

  • Dapper 是一个不错的微 ORM,开销很小,不做更改跟踪,但它会将你的表映射到对象中

标签: c# sql sql-server entity-framework sql-order-by


【解决方案1】:

打开EF logging,就可以看到生成的SQL了。这个

var result = ProductList.OrderBy(e => e.Stock).ThenByDescending(e => e.Name).ThenByDescending(e => e.Price).ThenByDescending(e => e.CreateDate);

应该是这样的

select * from product
order by Stock asc, Name desc, Price desc, CreateDate desc

【讨论】:

    【解决方案2】:

    如果您想动态添加列,而不是硬编码列的名称,您应该使用元数据来构建您想要打印的String

    您可以使用SqlDataReader.GetColumnSchema 方法获取DbColumn 的集合。

    然后您可以基于DbColumn.ColumnName 属性构建您的代码。

    【讨论】:

      【解决方案3】:

      我建议你寻找DataTable。

      它可以调用行或列。

      像这样。

      数据表 dt; dt.Load(cmd.ExecuteReader())

      dt.Rows[0] dt.Rows[1]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 2019-03-01
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 2015-11-09
        相关资源
        最近更新 更多