Rumah >pembangunan bahagian belakang >C++ >Mengapa Rangka Kerja Entiti Melemparkan 'Ungkapan Lambda dengan Badan Penyata Tidak Boleh Ditukar kepada Pokok Ungkapan'?

Mengapa Rangka Kerja Entiti Melemparkan 'Ungkapan Lambda dengan Badan Penyata Tidak Boleh Ditukar kepada Pokok Ungkapan'?

Susan Sarandon
Susan Sarandonasal
2024-12-29 08:01:10194semak imbas

Why Does Entity Framework Throw

Ralat Pengkompil: "Ungkapan Lambda dengan Badan Penyata Tidak Boleh Ditukar kepada Pokok Ungkapan"

Apabila bekerja dengan EntityFramework, anda mungkin menghadapi ralat menyatakan, "Ungkapan lambda dengan badan pernyataan tidak boleh ditukar kepada pokok ungkapan." Ralat ini berlaku apabila anda cuba menggunakan ungkapan lambda dengan pernyataan blok (juga dikenali sebagai lambda pernyataan) dalam konteks yang hanya lambda ungkapan dibenarkan.

Isunya

Seperti yang dicadangkan oleh mesej ralat, EntityFramework mengharapkan ungkapan lambdas, yang merupakan ungkapan ringkas tanpa sebarang pernyataan blok. Dalam contoh yang disediakan, ungkapan lambda:

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

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

mengandungi pernyataan blok, menjadikannya lambda pernyataan. EntityFramework tidak boleh menukar ungkapan ini kepada bentuk yang sesuai untuk melaksanakan pertanyaan pangkalan data.

Penyelesaian

Untuk menyelesaikan ralat, faktorkan semula ungkapan lambda anda untuk menggunakan ungkapan lambda. Lambdas ungkapan ialah ungkapan satu baris yang secara langsung mengembalikan nilai tanpa menggunakan sebarang pernyataan tambahan. Dalam kes ini, anda boleh menulis semula lambda seperti berikut:

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

Ungkapan lambda ini menghapuskan pernyataan blok dan terus mengembalikan objek Obj baharu. Borang ini serasi dengan jangkaan pokok ekspresi EntityFramework dan akan menyelesaikan ralat kompilasi.

Atas ialah kandungan terperinci Mengapa Rangka Kerja Entiti Melemparkan 'Ungkapan Lambda dengan Badan Penyata Tidak Boleh Ditukar kepada Pokok Ungkapan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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