Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Mereka Menggunakan NHibernate QueryOver?

Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Mereka Menggunakan NHibernate QueryOver?

DDD
Lepaskan: 2025-01-15 09:13:47
asal
457 orang telah melayarinya

How to Retrieve Requests with Their Latest Successful Response Using NHibernate QueryOver?

Mendapatkan semula Permintaan dengan Respons Berjaya Terkini menggunakan NHibernate QueryOver

Contoh ini menunjukkan pertanyaan NHibernate QueryOver yang canggih untuk mendapatkan semula semua Request entiti, masing-masing dikaitkan dengan Response terbaharunya yang berjaya. Entiti Request mempunyai koleksi Response entiti. Kami menyasarkan untuk mengambil Request sahaja bersama dengan Response terbaharunya yang berjaya, berdasarkan Response Timestamp.

Penyelesaian di bawah menggunakan subkueri bersarang untuk mencapai perolehan kompleks ini. Pendekatan yang lebih mudah mungkin boleh dilakukan jika entiti Response menyertakan bendera "IsActive".

Berikut ialah pelaksanaan NHibernate QueryOver:

<code class="language-c#">// Reference to a Response entity
Response responseAlias = null;

// Subquery to find the maximum DateTime for each RequestId
var maxTimestampSubquery = QueryOver.Of<Response>(() => responseAlias)
    .SelectList(l => l
        .SelectGroup(() => responseAlias.RequestId)
        .SelectMax(() => responseAlias.DateTime)
    );

// Subquery to find successful Responses with the maximum DateTime
var successfulResponseSubquery = QueryOver.Of<Response>(() => responseAlias)
    .Where(() => responseAlias.Success == true)
    .WithSubquery
    .WhereProperty(() => responseAlias.DateTime).In(maxTimestampSubquery);


// Main query to retrieve Requests with successful Responses
var query = session.QueryOver<Request>();
query.WithSubquery
    .WhereProperty(r => r.Id)
    .In(successfulResponseSubquery.Select(r => r.RequestId));

var requests = query.List<Request>();</code>
Salin selepas log masuk

Kod ini menggunakan subkueri untuk mengenal pasti entiti Response yang berkaitan dengan cekap dan memautkannya kepada entiti Request yang sepadan. maxTimestampSubquery mencari cap masa terbaharu untuk setiap permintaan, dan successfulResponseSubquery menapis untuk respons yang berjaya yang sepadan dengan cap masa tersebut. Pertanyaan utama kemudian mendapatkan semula entiti Request berdasarkan ID yang ditemui dalam subkueri respons yang berjaya. Ingat untuk menggantikan Request dan Response dengan nama entiti sebenar anda dan laraskan nama harta dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Mereka Menggunakan NHibernate QueryOver?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan