Mengembalikan IQueryable vs. ObjectQuery saat menggunakan LINQ ke Entitas

Saya telah membaca ketika menggunakan LINQ untuk memasukkan kueri bertipe IQueryable sebelum diproses tetapi ketika kueri telah diproses, itu bukan lagi IQueryable, tetapi ObjectQuery.

Dalam hal ini, apakah benar menulis metode dari lapisan saya (lapisan repositori) untuk mengembalikan IQueryable?

Apakah saya perlu melakukan cast?

Mengapa saya ingin mengembalikan ObjectQuery?

Saya berasal dari latar belakang LINQ ke SQL di mana segala sesuatunya selalu IQueryable tetapi EF tampaknya telah mengubahnya.

Bantuan apa pun sangat dihargai.


person mark smith    schedule 04.09.2010    source sumber


Jawaban (1)


Repositori saya selalu mengembalikan IQueryable. Alasannya adalah IQueryable tidak bergantung pada EF sedangkan ObjectQuery bergantung. Jadi jika saya ingin lapisan saya yang lain menjadi bodoh, saya tidak ingin memperkenalkan ketergantungan pada ObjectQuery.

ObjectQuery adalah implementasi IQueryable dengan beberapa fitur tambahan. Fitur pertama yang akan segera Anda temukan adalah fungsi Sertakan yang diperlukan untuk memuat properti navigasi (entitas terkait). Fitur kedua adalah EQL - bahasa kueri entitas. EQL adalah cara kedua untuk menanyakan model konseptual Anda. Ini memiliki sintaks yang mirip dengan SQL. Anda dapat menulis kueri sederhana sebagai string, meneruskannya ke konstruktor ObjectQuery dan menjalankan kueri atau menggunakannya di Linq-To-Entities.

person Ladislav Mrnka    schedule 04.09.2010
comment
terima kasih.. oke, kalau begitu bisa diquery :-) ... saya rasa saya tidak memerlukan fitur-fitur canggih dari objectquery... ermmm apakah saya perlu mentransmisikan .. dari linq ke kueri entitas itu adalah query objek yang dikembalikan... jadi ketika saya mengembalikan objek dari metode saya.. apakah saya perlu melakukan cast atau apa? Terima kasih lagi - person mark smith; 05.09.2010
comment
Terima kasih bagus! hanya apa yang saya butuhkan! - person mark smith; 05.09.2010