首頁 > 後端開發 > C++ > 如何在實體框架核心中執行無DBSET的RAW SQL查詢?

如何在實體框架核心中執行無DBSET的RAW SQL查詢?

Linda Hamilton
發布: 2025-01-27 01:01:12
原創
340 人瀏覽過

How Can I Execute Raw SQL Queries Without DbSets in Entity Framework Core?

Entity Framework Core 中沒有 DbSet 的原始 SQL 查詢的解決方法

Entity Framework Core 刪除 dbData.Database.SqlQuery<somemodel> 在執行返回未映射實體的原始 SQL 查詢時帶來了挑戰,特別是對於帶有排名的全文搜索等任務。 以下是克服此限制的方法:

EF Core 8 及更高版本:

EF Core 8 及更高版本中最簡單的解決方案是直接使用 SqlQuery。 它現在支持返回任意類型,在許多情況下消除了對無鍵實體的需求。

EF Core 3.0 及更高版本:

EF Core 3.0 及更高版本的推薦方法是利用無鍵實體類型:

  1. 使用 [Keyless] 屬性或 Fluent API 的 .HasNoKey() 定義無鍵實體類型。
  2. 使用 FromSqlRawFromSqlAsync 執行 SQL 查詢:
<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 及更高版本:

對於舊版本(EF Core 2.1 及更高版本),請考慮使用 查詢類型:

  1. DbQuery<T> 中聲明 DbContext 屬性,其中 T 是與查詢的輸出結構匹配的自定義類。
  2. 在此 FromSql 屬性上使用 DbQuery
<code class="language-csharp">public DbQuery<SomeModel> SomeModels { get; set; }

var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
登入後複製

這些方法提供了從原始 SQL 查詢檢索數據的靈活性,適應涉及 Entity Framework Core 中的排名和非映射實體的場景。

以上是如何在實體框架核心中執行無DBSET的RAW SQL查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板