ThS. Nguyễn Nghiệm 0913.745.789 nghiemn@fpt.edu.vn songlong2k@gmail.com
Bước 1: Đ/N Entity Class
Genre.cs, Artist.cs và Album.cs Bước 2: Đ/N DbContext Class
MusicStore.cs Bước 3: Cấu hình chuỗi kết nối
Web.config
@Html.EditorFor()
NOT NULL, LENGTH
Tạo DbContext Object MusicStoreDbContext db = new MusicStoreDbContext();
Truy vấn var genres = db.Genres;
Thêm mới db.Genres.Add(genre);
Cập nhật db.Entry(genre).State = EntityState.Modified;
Tìm kiếm var genre= db.Genres.Find(id);
Xóa db.Genres.Remove(genre);
Lưu sự thay đổi db.SaveChanges();
Tham chiếu CSDL
Các hành động thao tác CSDL
Giải phóng tham chiếu khi controller bị giải phóng
Action của CrudController
Xem tất cả GET: Index() => hiển thị tất cả
Xem 1 thực thể GET: Details() => hiển thị chi tiết 1 thực thể
Thêm GET: Create() => hiển thị form nhập mới POST: Create(Entity model) => thêm vào CSDL
Sửa GET: Edit(int id) => hiển thị form chứa thực thể muốn sửa POST: Edit(Entity model) => cập nhật cSDL
Xóa GET: Delete(int id) => hiển thị chi tiết thực thể POST: DeleteConfirm(int id) => xóa thực thể
Ánh xạ tự động
DbContext <=> Database Web.config: <add name=“tên dbcontext”…>
Entity Class <=> Table public DbSet<Album> Albums { get; set; }
Property <=> Column [Required] [StringLength(100)] public string Title { get; set; }
Id <=> Primary Key Tên: Id hoặc EntityId
Relationship Album: public virtual Genre Genre { get; set; } Genre: public virtual List<Album> Albums { get; set; }
ThS. Nguyễn Nghiệm 0913.745.789 nghiemn@fpt.edu.vn songlong2k@gmail.com
Thay dổi Entity Class Thay đổi Database Làm việc với CSDL đã tồn tại
Chỉ cần 1 sự thay đổi các thuộc tính của
EntityClass thì CSDL sẽ bị xóa đi và tạo lại
Trong CSDL được sinh ra bởi mô
hình lập trình Code-First của EF có chứa 1 bảng có tên là _MigrationHistory được sử dụng để theo dõi phiên bản ánh xạ. Xóa bảng này sẽ làm mất liên lạc về sự thay
đổi của EntityClass khi đó sẽ trở lại làm việc như CSDL đã tồn tại.
Nếu CSDL của bạn đã có, thì bạn vẫn thực hiện
các bước như cũ Định nghĩa Entity Class Định nghĩa DbContext Class Khai báo Connection String Ngoại trừ khai báo khởi đầu giá trị cho các bảng
trong CSDL tại Global.asax
Bỏ dòng mã lệnh này
DbContext Class
Entity Class
Tạo DbContext Object MusicStoreDbContext db = new MusicStoreDbContext();
Truy vấn var genres = db.Genres;
Thêm mới db.Genres.Add(genre);
Cập nhật db.Entry(genre).State = EntityState.Modified;
Tìm kiếm var genre= db.Genres.Find(id);
Xóa db.Genres.Remove(genre);
Lưu sự thay đổi db.SaveChanges();
VS 2012 hỗ trợ việc sinh mã CRUD từ Entity Class Bạn có thể sinh riêng lẻ từng trang hoặc sinh một
lúc cả 5 trang Index.cshtml: view liệt kê Details.cshtml: view xem chi tiết một thực thể Create.cshtml: view tạo mới Edit.cshtml: view sửa đổi Delete.cshtml: view xem trước khi xóa Bạn có thể sửa đổi cho phù hợp mã HTML +
Razor tự sinh của các trang thành viên
ArtistController gồm 5 Action
GET: Index() GET: Details() GET: Create() POST: Create(Artist model) GET: Edit(int id) POST: Edit(Artist model) GET: Delete(int id) POST: DeleteConfirm(int id)
Đoạn mã này xuất hiện trong cả Edit() và Delete() và có ý nghĩa: Nếu không tìm thấy artist trong db.Artists thì sẽ thông báo không tìm thấy
Form @Html.ActionLink ("Edit", "Edit", new { id=item.Id }) @Html.DisplayNameFor (model => model.Name) @Html.DisplayFor (modelItem => item.Name) @Html.LabelFor (model => model.Name)
Validation @Html.ValidationSummary (true) @Html.ValidationMessageFor (model => model.Photo) @Scripts.Render ("~/bundles/jqueryval")
Sinh View từ Model Class Chọn mẫu giao diện CRUD
Chọn Model Class
Chọn để sinh partial view
Chọn để sinh view áp dụng layout
Chú ý: View không sử dụng layout sẽ phải tự nhúng javascript và css riêng cho mình.