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

Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Menggunakan NHibernate?

Susan Sarandon
Lepaskan: 2025-01-15 06:35:43
asal
793 orang telah melayarinya

How to Retrieve Requests with the Latest Successful Response Using NHibernate?

Memiliki Banyak Pertanyaan: Dapatkan permintaan dengan respons terkini yang berjaya

Pertimbangkan model pepejal berikut:

<code class="language-c#">public class Request
{
    public virtual IList<Response> Responses { get; set; }
}

public class Response
{
    public virtual DateTime Timestamp { get; set; }
    public virtual bool Success { get; set; }
}</code>
Salin selepas log masuk

Tugasnya adalah untuk membina pertanyaan yang mendapatkan semula semua permintaan yang berjaya dengan respons terkini (berdasarkan cap masa).

Penyelesaian NHibernate menggunakan QueryOver

NHibernate menyediakan penyelesaian komprehensif menggunakan QueryOver:

<code class="language-c#">Response responseAlias = null;

var maxSubquery = QueryOver.Of<Response>()
    .SelectList(l => l
        .SelectGroup(item => item.RequestId)
        .SelectMax(item => item.Timestamp) // 使用 Timestamp 而不是 DateTime
    )
    .Where(item => item.RequestId == responseAlias.RequestId)
    .Where(Restrictions.EqProperty(
        Projections.Max<Response>(item => item.Timestamp), // 使用 Timestamp 而不是 DateTime
        Projections.Property(() => responseAlias.Timestamp) // 使用 Timestamp 而不是 DateTime
    ));

var successSubquery = QueryOver.Of<Response>(() => responseAlias)
    .Select(res => res.RequestId)
    .WithSubquery
    .WhereExists(maxSubquery)
    .Where(success => success.Success == true);

var query = session.QueryOver<Request>();
query.WithSubquery
    .WhereProperty(r => r.ID)
    .In(successSubquery);

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

Pertanyaan ini mendapatkan semula semua permintaan yang mempunyai sekurang-kurangnya satu respons yang berjaya (terbaru berdasarkan cap masa). DateTime telah digantikan dengan Timestamp yang lebih tepat dalam kod, dan penamaan pembolehubah telah dilaraskan sedikit untuk meningkatkan kebolehbacaan. Logik teras tetap sama.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Permintaan dengan Respons Berjaya Terkini Menggunakan NHibernate?. 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