EF Core 执行原生 SQL 并映射对象:两种方法详解
EF Core 提供了两种方式来直接执行 SQL 并转化为指定的对象:
- 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 方法来查询结果。
- 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
原文地址: https://www.cveoy.top/t/topic/j0Rj 著作权归作者所有。请勿转载和采集!