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 并映射对象:两种方法详解

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

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