Rumah > pembangunan bahagian belakang > C++ > Mengapa Rangka Kerja Entiti Membuang 'Ungkapan lambda dengan badan penyata tidak boleh ditukar kepada pepohon ungkapan'?

Mengapa Rangka Kerja Entiti Membuang 'Ungkapan lambda dengan badan penyata tidak boleh ditukar kepada pepohon ungkapan'?

Linda Hamilton
Lepaskan: 2024-12-31 08:45:13
asal
851 orang telah melayarinya

Why Does Entity Framework Throw

Ralat: "Ungkapan lambda dengan badan penyata tidak boleh ditukar kepada pepohon ungkapan" apabila menggunakan EntityFramework

Apabila menggunakan kaedah Pilih EntityFramework , anda mungkin menghadapi ralat: "Ungkapan lambda dengan badan pernyataan tidak boleh ditukar kepada pepohon ungkapan." Ralat ini sering berlaku apabila ungkapan lambda yang anda berikan mengandungi badan pernyataan dan bukannya ungkapan ringkas.

Memahami Ralat:

Dalam coretan kod yang disediakan:

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() {
    Var1 = someLocalVar,
    Var2 = o.var2 };
});
Salin selepas log masuk

Ungkapan lambda menggunakan badan pernyataan untuk mengisytiharkan dan menggunakan pembolehubah setempat someLocalVar sebelum mengembalikan tika Obj. Walau bagaimanapun, EntityFramework mengharapkan ungkapan ringkas yang boleh diterjemahkan terus ke dalam SQL untuk pelaksanaan pangkalan data yang cekap.

Penyelesaian:

Untuk menyelesaikan ralat ini, mudahkan ungkapan lambda dengan mengalih keluar badan penyata dan memberikan nilai secara langsung:

Arr[] myArray = objects.Select(o => new Obj() {
    Var1 = o.someVar,
    Var2 = o.var2 
});
Salin selepas log masuk

Dengan pengubahsuaian ini, ungkapan lambda hanya mengandungi ungkapan ringkas yang boleh diterjemahkan ke dalam pepohon ungkapan dan kod tersebut akan berjaya dikompil.

Atas ialah kandungan terperinci Mengapa Rangka Kerja Entiti Membuang 'Ungkapan lambda dengan badan penyata tidak boleh ditukar kepada pepohon ungkapan'?. 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