Bagikan melalui


SqlMetal.exe (Alat Pembuatan Kode)

Alat baris perintah SqlMetal menghasilkan kode dan pemetaan untuk LINQ untuk SQL komponen .NET Framework. Dengan menerapkan opsi yang muncul nanti dalam topik ini, Anda dapat menginstruksikan SqlMetal untuk melakukan beberapa tindakan berbeda yang mencakup hal berikut:

  • Dari database, hasilkan kode sumber dan atribut pemetaan atau file pemetaan.

  • Dari database, buat file bahasa markup database perantara (.dbml) untuk penyesuaian.

  • Dari file .dbml, hasilkan atribut kode dan pemetaan atau file pemetaan.

Alat ini secara otomatis diinstal dengan Visual Studio 2019 dan versi yang lebih lama. Secara default, file terletak di %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Jika Anda tidak menginstal Visual Studio, Anda juga bisa mendapatkan file SQLMetal dengan mengunduh Windows SDK.

Catatan

Pengembang yang menggunakan Visual Studio juga dapat menggunakan Object Relational Designer untuk menghasilkan kelas entitas. Pendekatan baris perintah diskalakan dengan baik untuk database besar. Karena SqlMetal adalah alat baris perintah, Anda dapat menggunakannya dalam proses build.

Untuk menjalankan alat, gunakan Prompt Perintah Pengembang Visual Studio atau PowerShell Pengembang Visual Studio. Pada perintah, masukkan perintah berikut:

sqlmetal [options] [<input file>]  

Opsi

Untuk melihat daftar opsi terbaru, ketik sqlmetal /? pada prompt perintah dari lokasi yang dipasang.

Opsi Koneksi

Opsi Deskripsi
/server: <nama> Menentukan nama server database.
/database: <nama> Menentukan katalog database di server.
/user: <name> Menentukan id pengguna masuk. Nilai default: Gunakan autentikasi Windows.
/password: <password> Menentukan kata sandi masuk. Nilai default: Gunakan autentikasi Windows.
/conn: <string koneksi> Menentukan string koneksi database. Tidak dapat digunakan dengan opsi /server, /database, /user, atau /password.

Jangan sertakan nama file dalam string koneksi. Sebagai gantinya, tambahkan nama file ke baris perintah sebagai file input. Misalnya, baris berikut menentukan "c:\northwnd.mdf" sebagai file input: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout: <detik> Menentukan nilai waktu habis saat SqlMetal mengakses database. Nilai default: 0 (yaitu, tidak ada batas waktu).

Opsi ekstraksi

Opsi Deskripsi
/views Mengekstrak tampilan database.
/functions Mengekstrak fungsi database.
/sprocs Mengekstrak prosedur tersimpan.

Opsi Keluaran

Opsi Deskripsi
/dbml [:file] Mengirim output sebagai .dbml. Tidak dapat digunakan dengan opsi /map.
/code [:file] Mengirim output sebagai kode sumber. Tidak dapat digunakan dengan opsi /dbml.
/map [:file] Menghasilkan file pemetaan XML alih-alih atribut. Tidak dapat digunakan dengan opsi /dbml.

Lain-Lain

Opsi Deskripsi
/language: <bahasa> Menentukan bahasa kode sumber.

<Bahasa komputer> yang valid: vb, csharp.

Nilai default: Berasal dari ekstensi pada nama file kode.
/namespace: <name> Menentukan namespace layanan kode yang dihasilkan. Nilai default: tidak ada namespace layanan.
/context: <type> Menentukan nama kelas konteks data. Nilai default: Berasal dari nama database.
/entitybase: <ketik> Menentukan kelas dasar kelas entitas dalam kode yang dihasilkan. Nilai default: Entitas tidak memiliki kelas dasar.
/pluralize Secara otomatis membuat pluralisasi atau mensingkularisasi nama kelas dan anggota.

Opsi ini hanya tersedia dalam versi bahasa Inggris AS.
/serialisasi: <opsi> Menghasilkan kelas yang dapat diserialisasikan.

<Opsi> yang valid: Tidak ada, Searah. Nilai default: None.

Untuk informasi selengkapnya, lihat Serialisasi.

File input

Opsi Deskripsi
<file input> Menentukan file .mdf SQL Server Express, file .sdf SQL Server Compact 3.5, atau file perantara .dbml.

Keterangan

Fungsionalitas SqlMetal sebenarnya melibatkan dua langkah:

  • Mengekstrak metadata database ke dalam file .dbml.

  • Menghasilkan file output kode.

    Dengan menggunakan opsi baris perintah yang sesuai, Anda dapat menghasilkan kode sumber Visual Basic atau C#, atau Anda dapat menghasilkan file pemetaan XML.

Untuk mengekstrak metadata dari file .mdf, Anda harus menentukan nama file .mdf setelah semua opsi lainnya.

Jika tidak ada /server yang ditentukan, localhost/sqlexpress diasumsikan.

Microsoft SQL Server 2005 memberikan pengecualian jika satu atau beberapa kondisi berikut ini benar:

  • SqlMetal mencoba mengekstrak prosedur tersimpan yang memanggil dirinya sendiri.

  • Tingkat bersarang dari prosedur, fungsi, atau tampilan tersimpan melebihi 32.

    SqlMetal menangkap pengecualian ini dan melaporkannya sebagai peringatan.

Untuk menentukan nama file input, tambahkan nama ke baris perintah sebagai file input. Menyertakan nama file dalam string koneksi (menggunakan opsi /conn ) tidak didukung.

Contoh

Buat file .dbml yang menyertakan metadata SQL yang diekstrak:

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

Hasilkan file .dbml yang menyertakan metadata SQL yang diekstrak dari file .mdf dengan menggunakan SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdf

Buat file .dbml yang menyertakan metadata SQL yang diekstrak dari SQL Server Express:

sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind

Hasilkan kode sumber dari file metadata .dbml:

sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml

Hasilkan kode sumber dari metadata SQL secara langsung:

sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp

Catatan

Saat Anda menggunakan opsi /pluralize dengan database sampel Northwind, perhatikan perilaku berikut. Saat SqlMetal membuat nama jenis baris untuk tabel, nama tabel bersifat tunggal. Ketika membuat properti DataContext untuk tabel, nama tabel bersifat jamak. Kebetulan, tabel dalam database sampel Northwind sudah jamak. Oleh karena itu, Anda tidak melihat bagian itu berfungsi. Meskipun merupakan praktik umum untuk memberi nama tabel database tunggal, ini juga merupakan praktik umum dalam .NET untuk memberi nama koleksi jamak.

Lihat juga