Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh melaksanakan pertanyaan SQL mentah tanpa DBSET dalam teras Rangka Kerja Entiti?

Bagaimanakah saya boleh melaksanakan pertanyaan SQL mentah tanpa DBSET dalam teras Rangka Kerja Entiti?

Linda Hamilton
Lepaskan: 2025-01-27 01:01:12
asal
340 orang telah melayarinya

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

Penyelesaian untuk Pertanyaan SQL Mentah tanpa DbSet dalam Teras Rangka Kerja Entiti

Penghapusan Teras Rangka Kerja Entiti dbData.Database.SqlQuery<somemodel> memberikan cabaran apabila melaksanakan pertanyaan SQL mentah yang mengembalikan entiti yang tidak dipetakan, terutamanya untuk tugas seperti carian teks penuh dengan kedudukan. Begini cara untuk mengatasi had ini:

EF Teras 8 dan Kemudian:

Penyelesaian paling mudah dalam EF Core 8 dan versi yang lebih baru ialah menggunakan SqlQuery secara langsung. Ia kini menyokong pengembalian jenis sewenang-wenangnya, menghapuskan keperluan untuk entiti tanpa kunci dalam banyak kes.

EF Teras 3.0 dan Ke Atas:

Pendekatan yang disyorkan untuk EF Core 3.0 dan lebih baru ialah menggunakan jenis entiti tanpa kunci:

  1. Tentukan jenis entiti tanpa kunci menggunakan atribut [Keyless] atau .HasNoKey() API fasih.
  2. Laksanakan pertanyaan SQL anda menggunakan FromSqlRaw atau FromSqlAsync:
<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
Salin selepas log masuk

EF Teras 2.1 dan Ke Atas:

Untuk versi lama (EF Core 2.1 dan ke atas), pertimbangkan untuk menggunakan jenis pertanyaan:

  1. Isytiharkan DbQuery<T> sifat dalam DbContext anda, dengan T ialah kelas tersuai yang sepadan dengan struktur output pertanyaan anda.
  2. Gunakan FromSql pada harta DbQuery ini:
<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>
Salin selepas log masuk

Kaedah ini menawarkan fleksibiliti dalam mendapatkan semula data daripada pertanyaan SQL mentah, menampung senario yang melibatkan kedudukan dan entiti tidak dipetakan dalam Teras Rangka Kerja Entiti.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan pertanyaan SQL mentah tanpa DBSET dalam teras Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan