ホームページ >バックエンド開発 >C++ >Entity Framework Core でカスタム データ型を使用して生の SQL クエリを実行する方法

Entity Framework Core でカスタム データ型を使用して生の SQL クエリを実行する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-27 01:16:09647ブラウズ

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

Entity Framework Core でのカスタム データ型を使用した生の SQL クエリの実行

Entity Framework Core の進化により、特にカスタム データ型に関して、生の SQL クエリの処理方法が変わりました。 dbData.Database.SqlQuery<somemodel> メソッドは最近のバージョンでは使用できなくなりました。 このガイドでは、さまざまな EF Core バージョンでカスタム型を返す生の SQL クエリを実行する方法について詳しく説明します。

EF Core 8 以降

EF Core 8 以降のリリースでは、SqlQuery メソッドが大幅に強化され、任意の型の戻りを直接サポートします。 これにより、プロセスが大幅に簡素化されます。

EF Core 3.0 以降

キーレスエンティティタイプの活用:

EF Core 3.0 以降で生の SQL クエリでカスタム データ型を処理する場合に推奨されるアプローチは、キーのないエンティティ タイプを採用することです。 これは、[Keyless] 属性または .HasNoKey() 構成メソッドを使用して実現されます。

<code class="language-csharp">[Keyless]
public class SomeModel
{
    // Properties
}</code>

FromSqlRaw または FromSql のいずれかを使用してクエリを実行します:

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>

EF コア 2.1 (RC1)

DbQuery の使用:

EF Core 2.1 RC1 では、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 コア 2.0

代替戦略:

EF Core 2.0 には次の回避策が必要です:

  • カスタム DTO: クエリ結果をマッピングするための専用のデータ転送オブジェクト (DTO) を作成します。 これには、データを手動でマッピングする必要があります。
  • SqlCommand: SqlCommand を直接使用します。 これにより、EF Core の機能がバイパスされ、その利点が減ります。

以上がEntity Framework Core でカスタム データ型を使用して生の SQL クエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。