Saya telah menyaksikan beberapa presentasi EF Code First dan belum melihat bagaimana EFCF bekerja dengan prosedur tersimpan.
Bagaimana saya bisa mendeklarasikan metode yang akan menggunakan beberapa sp? Dapatkah saya meneruskan entitas ke metode yang memanggil sp tanpa memetakan properti entitas secara manual ke parameter sp?
Selain itu, apa yang terjadi jika saya mengubah model saya? Apakah itu akan menjatuhkan sp saya saat membuat ulang tabel dari model? Dan bagaimana dengan pemicu?
Jika hal ini tidak didukung, apakah ada rencana untuk mendukungnya di masa mendatang?
Jawaban:
EDIT: Jawaban asli saya untuk EF4.1 (di bawah) sekarang sudah usang. Silakan lihat jawaban di bawah ini dari Diego Vega (yang bekerja di tim EF di Microsoft)!
@gsharp dan Shawn Mclean: Dari mana Anda mendapatkan informasi ini? Apakah Anda masih memiliki akses ke ObjectContext yang mendasarinya?
Ganti pernyataan "pilih" dengan proc yang tersimpan, dan begitulah.
Adapun pertanyaan Anda yang lain: Ya, sayangnya sp Anda akan mati. Anda mungkin perlu menambahkan pernyataan "BUAT PROSEDUR" dalam kode Anda.
Untuk EF 4.2:
sumber
Pembaruan: Dari EF6 dan seterusnya, EF Code First mendukung pemetaan prosedur tersimpan untuk penyisipan, pembaruan, dan penghapusan. Anda dapat menentukan pemetaan prosedur tersimpan selama pembuatan model menggunakan metode MapToStoredProcedures. Kami juga mendukung perancah otomatis dari prosedur tersimpan dasar untuk operasi tersebut. Lihat spesifikasi fiturnya di sini .
Jawaban asli: Kami tidak akan memiliki dukungan untuk memetakan prosedur yang tersimpan dalam model di Code-First pada rilis pertama, kami juga tidak akan memiliki cara untuk secara otomatis menghasilkan prosedur tersimpan untuk operasi CRUD dari tipe Anda. Ini adalah fitur yang ingin kami tambahkan di masa mendatang.
Seperti yang disebutkan di utas ini, dimungkinkan untuk kembali ke ObjectContext tetapi DbContext juga menyediakan API yang bagus untuk mengeksekusi kueri dan perintah SQL asli (mis. DbSet.SqlQuery, DbContext.Database.SqlQuery dan DbContext.Database.ExecuteSqlCommand). Versi SqlQuery yang berbeda memiliki fungsionalitas materialisasi dasar yang sama dengan yang ada di EF4 (seperti ExecuteStoreQuery: http://msdn.microsoft.com/en-us/library/dd487208.aspx ).
Semoga ini membantu.
sumber
sumber
Solusi yang lebih aman jenisnya adalah ini:
http://strugglesofacoder.blogspot.be/2012/03/calling-stored-procedure-with-entity.html
Kegunaan kelas ini adalah:
sumber
Untuk .NET Core (EntityFrameworkCore), saya bisa membuatnya berfungsi.
Mungkin bukan yang paling rapi, tapi ini pasti berhasil.
Migrasi untuk menambahkan prosedur tersimpan terlihat seperti ini :
Saya kemudian dapat menyebutnya dengan kode berikut :
Kemudian mencoba mendapatkan beberapa data terkait (satu ke banyak data hubungan misalnya konten posting) dan blog kembali dengan isi posting seperti yang diharapkan.
sumber