EF Core提供了两种方式来直接执行SQL并转化为指定的对象:

  1. Raw SQL Queries

可以使用DbContext的FromSqlRaw或FromSqlInterpolated方法来执行原始SQL查询,并将结果转化为指定的对象。例如:

var products = context.Products.FromSqlRaw("SELECT * FROM Products WHERE Price > {0}", 10).ToList();

这里的Products是指定的对象,FromSqlRaw方法接受一个原始SQL查询字符串和可选的参数,它将返回一个IQueryable对象,可以使用ToList或其他LINQ方法来查询结果。

  1. Query Types

Query Types是EF Core 2.1引入的一个新特性,它允许开发人员定义一个简单的POCO类来表示查询结果,并将其与一个原始SQL查询关联起来。例如:

public class ProductSummary
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

public class MyContext : DbContext
{
    public DbSet<ProductSummary> ProductSummaries { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Query<ProductSummary>().ToView("ProductSummaries");
    }
}

var summaries = context.ProductSummaries.FromSql("SELECT Name, Price FROM ProductSummaries").ToList();

这里的ProductSummary是一个简单的POCO类,它表示查询结果。在MyContext中,我们定义了一个DbSet,并使用ToView方法将其映射到一个原始SQL查询。最后,我们可以使用FromSql方法来执行查询,并将结果转化为ProductSummary对象列表

EF CORE 如何直接执行SQL并转化为指定的对象

原文地址: http://www.cveoy.top/t/topic/czLb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录