首页 >后端开发 >C++ >如何在 Entity Framework Core 中使用自定义数据类型执行原始 SQL 查询?

如何在 Entity Framework Core 中使用自定义数据类型执行原始 SQL 查询?

Barbara Streisand
Barbara Streisand原创
2025-01-27 01:16:09649浏览

How to Execute Raw SQL Queries with Custom Data Types in Entity Framework Core?

>在实体框架核心中使用自定义数据类型执行原始SQL查询

>实体框架Core的演变改变了如何处理原始SQL查询,尤其是有关自定义数据类型的方法。 最近版本中不再可用dbData.Database.SqlQuery<somemodel>方法。 本指南详细介绍了如何执行RAW SQL查询,以返回各种EF Core版本中的自定义类型。

EF Core 8及以后 EF Core 8和随后的释放显着增强了

的方法,直接支持任意类型的返回。 这大大简化了过程。

EF Core 3.0及以后

SqlQuery>利用无钥匙实体类型:

>

>在EF Core 3.0及以后的RAW SQL查询中处理自定义数据类型的推荐方法是采用无钥匙实体类型。 这是使用

>属性或

配置方法来实现的。>

使用

>或[Keyless]执行查询:.HasNoKey()>

<code class="language-csharp">[Keyless]
public class SomeModel
{
    // Properties
}</code>
ef core 2.1(rc1)

FromSqlRawFromSql>利用dbquery

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
在EF Core 2.1 rc1中,定义

内的a

属性,并使用

>方法:

> ef core 2.0

DbQuery<T> DbContext替代策略:FromSql

<code class="language-csharp">public DbSet<SomeModel> SomeModels { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeModel>().HasNoKey();
}

// Execute query
var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList();</code>
ef core 2.0需要解决方法:

>自定义dtos:创建专用数据传输对象(DTO)来映射查询结果。 这需要数据的手动映射。

>

sqlcommand:直接使用
    。 这绕过EF Core的功能,降低了其优势。

以上是如何在 Entity Framework Core 中使用自定义数据类型执行原始 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn