Bagaimana saya bisa memilih/memproyeksikan nilai dari subkueri dari tabel berbeda ke dalam kueri utama saya?
Saya memiliki model NH seperti ini:
[Serializable]
public class MyModel
{
public virtual int Id {get; set;}
//more mapped values
....
//unmapped values
public virtual string ValueFromOtherTable {get;set;}
}
Dan saya ingin mengisi ValueFromOtherTable dengan gabung kiri seperti ini:
Select mt.*, ..., ot.ValueFromOtherTable from MyModelTable mt left
join OtherTable ot ON (somecondition)
di mana MyModelTable adalah tabel yang dipetakan ke kelas MyModel. Saya ingin mengisi ValueFromOtherTable (tanpa pemetaan NH) dengan memilih semua nilai dari mt (untuk mengisi kolom yang dipetakan NH) dan kemudian dengan menggunakan OtherTable saya ingin mengisi ValueFromOtherTable.
Saya tidak dapat menggabungkan kedua tabel melalui QueryOver
karena tidak ada korelasi langsung orangtua-anak dalam model, jadi JoinAlias
atau JoinQueryOver
tidak akan berfungsi. MainQueryOver
pertanyaan saya MyModelTable
.
ALTERNATIF:
Alternatifnya adalah dengan terlebih dahulu mendapatkan semua nilai dari MyModelTable dan kemudian menggunakan properti di sana untuk menanyakan OtherTable. Namun hal ini akan mengakibatkan masalah SELECT N+1
(untuk setiap model dari MyModel
pilih beberapa Tabel Lain...) dan juga membuat kode menjadi sangat rumit.
Apakah ada cara yang baik untuk mengatasi masalah ini atau satu-satunya cara untuk mengisi MyModel dengan menggunakan alternatif yang dijelaskan?