Rumah >pangkalan data >tutorial mysql >Bolehkah LINQ Melakukan Kemas Kini SQL Terus Tanpa Penyata Pilihan?

Bolehkah LINQ Melakukan Kemas Kini SQL Terus Tanpa Penyata Pilihan?

DDD
DDDasal
2024-12-20 10:31:10833semak imbas

Can LINQ Perform Direct SQL Updates Without Select Statements?

Kemas Kini Terus dengan LINQ: Memintas Pernyataan Pilih

Apabila bekerja dengan SQL, kemas kini langsung tanpa pernyataan terpilih boleh dibuat menggunakan syarat. Dengan LINQ, corak biasa melibatkan pemilihan entiti, mengubah suainya dan menyerahkan perubahan.

Walau bagaimanapun, bagaimana jika anda ingin melaksanakan kemas kini langsung menggunakan LINQ dan menangguhkan pelaksanaan? Adakah mungkin untuk mengelak daripada menghantar data kepada pelanggan dan meminta SQL dilaksanakan secara langsung?

Jawapannya ialah ya. LINQ-to-SQL boleh menjana kenyataan kemas kini tanpa memerlukan pernyataan pilih. Ini boleh dicapai dengan melampirkan objek dengan nilai utama pada konteks dan mengubah suai sifatnya.

Contohnya:

Foo foo = new Foo { FooId = fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name = "test";
context.SubmitChanges();

Dengan menetapkan UpdateCheck="Never" untuk semua sifat dalam Dbml fail, satu kenyataan kemas kini akan dijana tanpa memilih entiti asal terlebih dahulu.

Satu kaveat yang perlu diambil perhatian ialah jika anda ingin menetapkan harta kepada null, anda perlu memulakan objek dengan nilai yang berbeza untuk membolehkan LINQ mengesan perubahan. Sebagai contoh:

Foo foo = new Foo { FooId = fooId, Name = "###" };
...
foo.Name = null;

Selain itu, anda boleh menyemak cap masa semasa kemas kini dengan menetapkan sifat kepada UpdateCheck="Sentiasa" dalam fail Dbml. Ini memastikan bahawa pernyataan kemas kini termasuk syarat berdasarkan nilai cap masa.

Atas ialah kandungan terperinci Bolehkah LINQ Melakukan Kemas Kini SQL Terus Tanpa Penyata Pilihan?. 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