概述
Entity Framework Core 的发展改变了处理具有自定义结果映射的原始 SQL 查询的方式。 本文解决了检索数据的挑战,特别是在将表数据与全文搜索查询的结果相结合时,重点介绍各种 EF Core 版本的解决方案。
EF Core 8 及更高版本
EF Core 8 及后续版本简化了此过程。 SqlQuery
方法现在直接支持返回任意类型。这允许使用无键实体类型和自定义类来映射查询结果。
EF Core 3.0 和无密钥实体类型
对于 EF Core 3.0,无键实体类型提供了一个干净的解决方案。 使用 [Keyless]
属性或通过调用 HasNoKey()
.
<code class="language-csharp">[Keyless] public class SomeModel { ... } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<SomeModel>().HasNoKey(); }</code>
使用 FromSqlRaw
或 FromSql
执行查询:
<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("YOUR SQL SCRIPT").ToList();</code>
EF Core 2.1 和查询类型
EF Core 2.1 引入了查询类型,提供了映射自定义类的结构化方法。 将 DbQuery<T>
属性添加到 DbContext
并使用 FromSql
:
<code class="language-csharp">public DbQuery<SomeModel> SomeModels { get; set; } var result = context.SomeModels.FromSql("YOUR SQL SCRIPT").ToList();</code>
总结
这些方法有效地解决了在 Entity Framework Core 中执行原始 SQL 查询时自定义结果映射的需求,从而实现灵活的数据检索,包括涉及全文搜索结果和组合数据集的场景。 选择最适合您的 EF Core 版本的方法。 请记住将 "YOUR SQL SCRIPT"
替换为您实际的 SQL 查询。
以上是如何在 Entity Framework Core 中使用自定义结果映射执行原始 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!