无需DbSet在Entity Framework Core中执行原始SQL查询
在Entity Framework Core中,执行不依赖DbSet的原始SQL查询变得更具挑战性。传统的dbData.Database.SqlQuery<somemodel>
方法已被移除,开发者需要寻找替代方法来使用SQL查询检索数据。
EF Core 8及更高版本
EF Core 8引入了SqlQuery
方法,支持从原始SQL查询返回标量值和任意类型。此方法允许您直接执行SQL查询并将结果映射到所需的类型。
EF Core 3.0
对于EF Core 3.0,可以使用无键实体类型(以前称为查询类型)。这些类型不映射到特定的数据库表,允许任意数据检索。要定义无键实体类型,请在您的模型配置中使用[Keyless]
数据注释或HasNoKey()
方法。
EF Core 2.1
在EF Core 2.1 Release Candidate 1中,引入了查询类型。这些类型用作临时FromSql()
查询的返回类型,映射到没有主键的数据库视图或表。在您的DbContext中定义一个DbQuery<t>
属性来表示查询类型,然后使用FromSql
方法执行查询。
示例:
<code>public DbQuery<somemodel> SomeModels { get; set; } var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList();</somemodel></code>
总结
这些方法提供了在Entity Framework Core中执行原始SQL查询的不同方法,而无需依赖DbSet。选择最适合您的特定需求和EF Core版本的方法。
以上是在不使用DBSET的情况下,如何在实体框架核心中执行RAW SQL查询?的详细内容。更多信息请关注PHP中文网其他相关文章!