Saat ini saya menggunakan Entity Framework untuk akses db saya tetapi ingin melihat Dapper. Saya memiliki kelas seperti ini:
public class Course{
public string Title{get;set;}
public IList<Location> Locations {get;set;}
...
}
public class Location{
public string Name {get;set;}
...
}
Jadi satu mata kuliah dapat diajarkan di beberapa lokasi. Entity Framework melakukan pemetaan untuk saya sehingga objek Kursus saya diisi dengan daftar lokasi. Bagaimana saya akan melakukan hal ini dengan Dapper, apakah mungkin atau saya harus melakukannya dalam beberapa langkah kueri?
Jawaban:
Dapper bukanlah ORM yang lengkap, Dapper tidak menangani pembuatan kueri ajaib dan semacamnya.
Untuk contoh khusus Anda, berikut ini mungkin akan berhasil:
Ambil kursusnya:
Ambil pemetaan yang relevan:
Ambil lokasi yang relevan
Petakan semuanya
Meninggalkan ini kepada pembaca, Anda membuat beberapa peta dan beralih melalui kursus Anda yang diisi dengan lokasi.
Peringatan bahwa
in
trik ini akan berfungsi jika Anda memiliki kurang dari 2100 pencarian (Sql Server), jika Anda memiliki lebih banyak, Anda mungkin ingin mengubah kueri menjadiselect * from CourseLocations where CourseId in (select Id from Courses ... )
jika itu masalahnya, Anda mungkin juga menarik semua hasil sekaligus menggunakanQueryMultiple
sumber
Alternatifnya, Anda bisa menggunakan satu kueri dengan pencarian:
Lihat di sini https://www.tritac.com/blog/dappernet-by-example/
sumber
Tidak perlu
lookup
Kamussumber
Saya tahu saya sangat terlambat untuk ini, tetapi ada pilihan lain. Anda dapat menggunakan QueryMultiple di sini. Sesuatu seperti ini:
sumber
Maaf terlambat ke pesta (seperti biasa). Bagi saya, lebih mudah menggunakan a
Dictionary
, seperti yang dilakukan Jeroen K , dalam hal kinerja dan keterbacaan. Juga, untuk menghindari penggandaan tajuk di seluruh lokasi , saya gunakanDistinct()
untuk menghapus potensi dup:sumber
Sesuatu yang hilang. Jika Anda tidak menentukan setiap bidang dari
Locations
dalam kueri SQL, objekLocation
tidak dapat diisi. Lihatlah:Menggunakan
l.*
dalam kueri, saya memiliki daftar lokasi tetapi tanpa data.sumber
Tidak yakin apakah ada yang membutuhkannya, tetapi saya memiliki versi dinamis tanpa Model untuk pengkodean cepat & fleksibel.
sumber