Bagikan melalui


String Koneksi di dalam Entity Framework ADO.NET

String koneksi berisi informasi inisialisasi yang diteruskan sebagai parameter dari penyedia data ke sumber data. Sintaks tergantung pada penyedia data, dan string koneksi diurai selama upaya untuk membuka koneksi. String koneksi yang digunakan oleh Entity Framework berisi informasi yang digunakan untuk terhubung ke penyedia data ADO.NET yang mendasari yang mendukung Entity Framework. String koneksi ini juga berisi informasi tentang model dan file pemetaan yang diperlukan.

String koneksi digunakan oleh penyedia EntityClient saat mengakses model dan memetakan metadata dan menghubungkan ke sumber data. String koneksi bisa diakses atau diatur melalui properti ConnectionString dari EntityConnection. Kelas EntityConnectionStringBuilder bisa digunakan untuk membangun atau mengakses parameter secara terprogram dalam string koneksi.

Alat Model Data Entitas menghasilkan string koneksi yang disimpan dalam file konfigurasi aplikasi. ObjectContext mengambil informasi koneksi ini secara otomatis saat membuat kueri objek. EntityConnection yang digunakan oleh instans ObjectContext bisa diakses dari properti Connection.

Sintaksis String Koneksi

Untuk mempelajari sintaks umum untuk string koneksi, lihat Sintaks string koneksi | String Koneksi dalam ADO.NET.

Parameter String Koneksi

Tabel berikut ini mencantumkan nama yang valid untuk nilai kata kunci di ConnectionString.

Kata kunci Deskripsi
Provider Diperlukan jika kata kunci Name tidak ditentukan. Nama penyedia, yang digunakan untuk mengambil objek DbProviderFactory untuk penyedia yang mendasarinya. Nilai ini bersifat konstan.

Ketika kata kunci Name tidak disertakan dalam string koneksi entitas, nilai yang tidak kosong untuk kata kunci Provider diperlukan. Kata kunci ini saling eksklusif dengan kata kunci Name.
Provider Connection String Opsional. Menentukan string koneksi khusus penyedia yang diteruskan ke sumber data yang mendasarinya. String koneksi ini berisi pasangan kata kunci/nilai yang valid untuk penyedia data. Provider Connection String yang tidak valid akan menyebabkan kesalahan run-time saat dievaluasi oleh sumber data.

Kata kunci ini saling eksklusif dengan kata kunci Name.

Pastikan untuk keluar dari nilai sesuai dengan sintaks umum string koneksi ADO.NET. Pertimbangkan, contohnya, string koneksi berikut: Server=serverName; User ID = userID. String koneksi ini harus melarikan diri karena berisi titik koma. Karena tidak mengandung tanda kutip ganda, string koneksi ini bisa digunakan untuk melarikan diri:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Diperlukan jika kata kunci Name tidak ditentukan. Daftar direktori, file, dan lokasi sumber daya yang dibatasi pipa untuk mencari metadata dan informasi pemetaan. Berikut ini adalah contohnya:

Metadata=

c:\model | c:\model\sql\mapping.msl;

Ruang kosong di setiap sisi pemisah pipa diabaikan.

Kata kunci ini saling eksklusif dengan kata kunci Name.
Name Aplikasi ini dapat secara opsional menentukan nama koneksi dalam file konfigurasi aplikasi yang menyediakan nilai string koneksi kata kunci/nilai yang diperlukan. Dalam hal ini, Anda tidak dapat memasoknya langsung di string koneksi. Kata kunci Name tidak diperbolehkan dalam file konfigurasi.

Saat kata kunci Name tidak disertakan dalam string koneksi entitas, maka dibutuhkan nilai yang tidak kosong untuk kata kunci Penyedia.

Kata kunci ini saling eksklusif dengan semua kata kunci string koneksi lainnya.

Lokasi File Model dan Pemetaan

Parameter Metadata berisi daftar lokasi bagi penyedia EntityClient untuk mencari model dan memetakan file. File model dan pemetaan sering digunakan di direktori yang sama dengan file yang bisa dieksekusi aplikasi. File-file ini juga bisa digunakan di lokasi tertentu atau disertakan sebagai sumber daya tertanam dalam aplikasi.

Sumber daya yang disematkan akan ditentukan sebagai berikut:

Metadata=res://<assemblyFullName>/<resourceName>

Opsi berikut ini tersedia untuk menentukan lokasi sumber daya yang disematkan:

Opsi Deskripsi
assemblyFullName Nama lengkap dari perakitan dengan sumber daya yang disematkan. Nama ini mencakup nama sederhana, nama versi, budaya yang didukung, dan kunci publik, sebagai berikut:

ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Sumber daya bisa disematkan di perakitan apa pun yang dapat diakses oleh aplikasi.

Jika Anda menentukan wildcard (*) untuk assemblyFullName, runtime Entity Framework akan mencari sumber daya di lokasi berikut, dalam urutan ini:

1. Rakitan panggilan.
2. Rakitan yang direferensikan.
3. Rakitan di direktori bin aplikasi.

Jika file tidak berada di salah satu lokasi ini, pengecualian akan dilemparkan. Catatan: Saat Anda menggunakan wildcard (*), Entity Framework harus melihat semua rakitan untuk sumber daya dengan nama yang benar. Untuk meningkatkan performa, tentukan nama perakitan alih-alih wildcard.
resourceName Nama sumber daya yang disertakan, seperti AdventureWorksModel.csdl. Layanan metadata hanya akan mencari file atau sumber daya dengan salah satu ekstensi berikut ini: .csdl, .ssdl, atau .msl. Jika resourceName tidak ditentukan, seluruh sumber daya metadata akan dimuat. Sumber daya harus memiliki nama unik dalam sebuah rakitan. Jika beberapa file dengan nama yang sama didefinisikan dalam direktori yang berbeda di perakitan, resourceName harus menyertakan struktur folder sebelum nama sumber daya, misalnya FolderName.FileName.csdl.

resourceName tidak diperlukan saat Anda menentukan wildcard (*) untuk assemblyFullName.

Catatan

Untuk meningkatkan kinerja, sematkan sumber daya pada perakitan panggilan, kecuali dalam skenario non-Web di mana tidak ada referensi ke pemetaan yang mendasari dan file metadata di perakitan panggilan.

Contoh berikut ini memuat semua model dan file pemetaan di perakitan panggilan, rakitan yang direferensikan, dan rakitan lainnya di direktori bin aplikasi.

Metadata=res://*/

Contoh berikut ini memuat file model.csdl dari perakitan AdventureWorks, dan memuat file model.ssdl dan model.msl dari direktori default aplikasi yang sedang berjalan.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl

Contoh berikut ini memuat tiga sumber daya yang ditentukan dari perakitan tertentu.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.ssdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.msl

Contoh berikut ini memuat semua sumber daya yang disematkan dengan ekstensi .csdl, .msl, dan .ssdl dari perakitan.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/

Contoh berikut ini memuat semua sumber daya di jalur file relatif ditambah "datadir\metadata\" dari lokasi rakitan yang dimuat.

Metadata=datadir\metadata\

Contoh berikut ini memuat semua sumber daya di jalur file relatif dari lokasi perakitan yang dimuat.

Metadata=.\

Dukungan untuk String Substitusi | DataDirectory| dan Operator Root Aplikasi Web (~)

DataDirectory dan operator ~ digunakan dalam ConnectionString sebagai bagian dari kata kunci Metadata dan Provider Connection String. EntityConnection meneruskan DataDirectory dan operator ~ ke MetadataWorkspace dan penyedia toko, secara berurutan.

Persyaratan Deskripsi
&#124;DataDirectory&#124; Menyelesaikan ke jalur relatif menuju ke file pemetaan dan metadata. Ini adalah nilai yang diatur melalui metode AppDomain.SetData("DataDirectory", objValue). String pengganti DataDirectory harus dikelilingi oleh karakter pipa dan tidak boleh ada spasi kosong antara namanya dan karakter pipa. Nama DataDirectory tidak peka huruf besar/kecil.

Bila direktori fisik bernama "DataDirectory" harus diteruskan sebagai anggota daftar jalur metadata, tambahkan spasi kosong ke salah satu atau kedua sisi nama. Misalnya: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". Aplikasi ASP.NET menyelesaikan |DataDirectory| ke folder "<application root>/app_data".
~ Menyelesaikan ke root aplikasi Web. Karakter ~ pada posisi terdepan selalu ditafsirkan sebagai operator root aplikasi Web (~), meskipun mungkin mewakili subdirektori lokal yang valid. Untuk merujuk ke subdirektori lokal tersebut, pengguna harus secara eksplisit meneruskan ./~.

DataDirectory dan operator ~ harus ditentukan hanya di awal jalur, mereka tidak diselesaikan di posisi lain. Entity Framework akan mencoba menyelesaikan ~/data, tetapi akan memperlakukan /data/~ sebagai jalur fisik.

Jalur yang dimulai dengan operator DataDirectory atau ~ tidak bisa menyelesaikan ke jalur fisik di luar cabang DataDirectory dan operator ~. Misalnya, jalur berikut ini akan menyelesaikan: ~, ~/data, ~/bin/Model/SqlServer. Jalur berikut akan gagal diselesaikan: ~/.., ~/../other.

DataDirectory dan operator ~ dapat diperluas untuk menyertakan sub-direktori, sebagai berikut: |DataDirectory|\Model, ~/bin/Model

Resolusi string substitusi DataDirectory dan operator ~ tidak rekursif. Contohnya, ketika DataDirectory menyertakan karakter ~, pengecualian akan terjadi. Ini mencegah rekursi tak terbatas.

Lihat juga