Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan menggunakan MVC, Entity Framework, dan ASP.NET Scaffolding, Anda dapat membuat aplikasi web yang menyediakan antarmuka ke database yang sudah ada. Seri tutorial ini menunjukkan kepada Anda cara membuat kode secara otomatis yang memungkinkan pengguna menampilkan, mengedit, membuat, dan menghapus data yang berada dalam tabel database. Kode yang dihasilkan sesuai dengan kolom dalam tabel database.
Tutorial ini berfokus pada penambahan anotasi data ke model data untuk menentukan persyaratan validasi dan pemformatan tampilan. Ini ditingkatkan berdasarkan umpan balik dari pengguna di bagian komentar.
Di tutorial ini, Anda akan:
- Menambahkan anotasi data
- Menambahkan kelas metadata
Prasyarat
Menambahkan anotasi data
Seperti yang Anda lihat di topik sebelumnya, beberapa aturan validasi data secara otomatis diterapkan ke input pengguna. Misalnya, Anda hanya dapat memberikan angka untuk properti Nilai. Untuk menentukan lebih banyak aturan validasi data, Anda dapat menambahkan anotasi data ke kelas model Anda. Anotasi ini diterapkan di seluruh aplikasi web Anda untuk properti yang ditentukan. Anda juga dapat menerapkan atribut pemformatan yang mengubah cara properti ditampilkan; seperti, mengubah nilai yang digunakan untuk label teks.
Dalam tutorial ini, Anda akan menambahkan anotasi data untuk membatasi panjang nilai yang disediakan untuk properti FirstName, LastName, dan MiddleName. Dalam database, nilai-nilai ini dibatasi hingga 50 karakter; namun, di aplikasi web Anda bahwa batas karakter saat ini tidak diberlakukan. Jika pengguna menyediakan lebih dari 50 karakter untuk salah satu nilai tersebut, halaman akan crash saat mencoba menyimpan nilai ke database. Anda juga akan membatasi Nilai ke nilai antara 0 dan 4.
Pilih model>ContosoModel.edmx>ContosoModel.tt dan buka file Student.cs . Tambahkan kode yang disorot berikut ke kelas .
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Student
{
public Student()
{
this.Enrollments = new HashSet<Enrollment>();
}
public int StudentID { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
public Nullable<System.DateTime> EnrollmentDate { get; set; }
[StringLength(50)]
public string MiddleName { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
Buka Enrollment.cs dan tambahkan kode yang disorot berikut.
namespace ContosoSite.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class Enrollment
{
public int EnrollmentID { get; set; }
[Range(0, 4)]
public Nullable<decimal> Grade { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
}
Bangun solusinya.
Klik Daftar siswa dan pilih Edit. Jika Anda mencoba memasukkan lebih dari 50 karakter, pesan kesalahan akan ditampilkan.
Kembali ke halaman beranda. Klik Daftar pendaftaran dan pilih Edit. Mencoba untuk memberikan nilai di atas 4. Anda akan menerima kesalahan ini: Bidang Nilai harus antara 0 dan 4.
Menambahkan kelas metadata
Menambahkan atribut validasi langsung ke kelas model berfungsi ketika Anda tidak mengharapkan database berubah; namun, jika database Anda berubah dan Anda perlu meregenerasi kelas model, Anda akan kehilangan semua atribut yang telah Anda terapkan ke kelas model. Pendekatan ini bisa sangat tidak efisien dan rentan kehilangan aturan validasi penting.
Untuk menghindari masalah ini, Anda dapat menambahkan kelas metadata yang berisi atribut . Saat Anda mengaitkan kelas model ke kelas metadata, atribut tersebut diterapkan ke model. Dalam pendekatan ini, kelas model dapat diregenerasi tanpa kehilangan semua atribut yang telah diterapkan ke kelas metadata.
Di folder Model , tambahkan kelas bernama Metadata.cs.
Ganti kode di Metadata.cs dengan kode berikut.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
public class StudentMetadata
{
[StringLength(50)]
[Display(Name="Last Name")]
public string LastName;
[StringLength(50)]
[Display(Name="First Name")]
public string FirstName;
[StringLength(50)]
[Display(Name="Middle Name")]
public string MiddleName;
[Display(Name = "Enrollment Date")]
public Nullable<System.DateTime> EnrollmentDate;
}
public class EnrollmentMetadata
{
[Range(0, 4)]
public Nullable<decimal> Grade;
}
}
Kelas metadata ini berisi semua atribut validasi yang sebelumnya telah Anda terapkan ke kelas model. Atribut Display digunakan untuk mengubah nilai yang digunakan untuk label teks.
Sekarang, Anda harus mengaitkan kelas model dengan kelas metadata.
Di folder Model , tambahkan kelas bernama PartialClasses.cs.
Ganti isi file dengan kode berikut.
using System;
using System.ComponentModel.DataAnnotations;
namespace ContosoSite.Models
{
[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
}
[MetadataType(typeof(EnrollmentMetadata))]
public partial class Enrollment
{
}
}
Perhatikan bahwa setiap kelas ditandai sebagai partial kelas, dan masing-masing cocok dengan nama dan namespace sebagai kelas yang dibuat secara otomatis. Dengan menerapkan atribut metadata ke kelas parsial, Anda memastikan bahwa atribut validasi data akan diterapkan ke kelas yang dibuat secara otomatis. Atribut ini tidak akan hilang saat Anda meregenerasi kelas model karena atribut metadata diterapkan di kelas parsial yang tidak diregenerasi.
Untuk meregenerasi kelas yang dihasilkan secara otomatis, buka file ContosoModel.edmx . Sekali lagi, klik kanan pada permukaan desain dan pilih Perbarui Model dari Database. Meskipun Anda belum mengubah database, proses ini akan meregenerasi kelas. Di tab Refresh , pilih Tabel dan Selesai.
Simpan file ContosoModel.edmx untuk menerapkan perubahan.
Buka file Student.cs atau file Enrollment.cs , dan perhatikan bahwa atribut validasi data yang Anda terapkan sebelumnya tidak lagi ada dalam file. Namun, jalankan aplikasi, dan perhatikan bahwa aturan validasi masih diterapkan saat Anda memasukkan data.
Kesimpulan
Seri ini memberikan contoh sederhana tentang cara menghasilkan kode dari database yang ada yang memungkinkan pengguna mengedit, memperbarui, membuat, dan menghapus data. Ini digunakan ASP.NET MVC 5, Kerangka Kerja Entitas dan perancah ASP.NET untuk membuat proyek.
Untuk contoh pengantar pengembangan Code First, lihat Memulai ASP.NET MVC 5.
Untuk contoh yang lebih canggih, lihat Membuat Model Data Kerangka Kerja Entitas untuk aplikasi ASP.NET MVC 4. Perhatikan bahwa API DbContext yang Anda gunakan untuk bekerja dengan data di Database First sama dengan API yang Anda gunakan untuk bekerja dengan data di Kode Pertama. Bahkan jika Anda berniat menggunakan Database First, Anda dapat mempelajari cara menangani skenario yang lebih kompleks seperti membaca dan memperbarui data terkait, menangani konflik konkurensi, dan sebagainya dari tutorial Code First. Satu-satunya perbedaan adalah bagaimana database, kelas konteks, dan kelas entitas dibuat.
Sumber Daya Tambahan:
Untuk daftar lengkap anotasi validasi data yang dapat Anda terapkan ke properti dan kelas, lihat System.ComponentModel.DataAnnotations.
Langkah berikutnya
Di tutorial ini, Anda akan:
- Menambahkan anotasi data
- Menambahkan kelas metadata
Untuk mempelajari cara menyebarkan aplikasi web dan database SQL ke Azure App Service, lihat tutorial ini: