Rumah > pembangunan bahagian belakang > C++ > Mengapa Ungkapan Lambda Saya dengan Badan Penyata Menyebabkan Ralat dalam Rangka Kerja Entiti?

Mengapa Ungkapan Lambda Saya dengan Badan Penyata Menyebabkan Ralat dalam Rangka Kerja Entiti?

DDD
Lepaskan: 2024-12-31 19:42:09
asal
954 orang telah melayarinya

Why Does My Lambda Expression with a Statement Body Cause an Error in Entity Framework?

Ungkapan Lambda dengan Ralat Badan Penyata dalam EntityFramework

Dalam EntityFramework, ralat biasa yang dihadapi semasa bekerja dengan ungkapan lambda ialah:

"Ungkapan lambda dengan badan penyata tidak boleh ditukar kepada pokok ungkapan."

Ralat ini berlaku apabila ungkapan lambda mengandungi pernyataan dan bukannya ungkapan. Dalam EntityFramework, ungkapan lambda digunakan untuk menentukan keadaan atau transformasi dalam pertanyaan. Walau bagaimanapun, ungkapan tidak boleh mengandungi pernyataan yang mengubah suai pembolehubah atau melakukan tindakan.

Contoh:

Coretan kod berikut mencetuskan ralat:

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

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

Penjelasan:

Dalam contoh ini, lambda ungkapan menggunakan badan pernyataan untuk memberikan nilai kepada pembolehubah setempat someLocalVar sebelum mengembalikan objek. Walau bagaimanapun, badan penyata ini tidak boleh ditukar kepada pepohon ungkapan untuk dilaksanakan oleh EntityFramework.

Penyelesaian:

Untuk menyelesaikan ralat ini, tulis semula ungkapan lambda supaya ia hanya mengandungi ungkapan. Dalam kes ini, ini bermakna mengalih keluar badan pernyataan dan membina objek Obj secara langsung:

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

Kini ungkapan lambda terdiri semata-mata daripada ungkapan dan boleh ditukar kepada pepohon ekspresi untuk diproses oleh EntityFramework.

Atas ialah kandungan terperinci Mengapa Ungkapan Lambda Saya dengan Badan Penyata Menyebabkan Ralat dalam Rangka Kerja Entiti?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan