Hình 1: Tạo Project Dynamic Data với ADO.NET Entity FrameworkTrong Project này chúng ta đặt tên là Vi_du_8, ngôn ngữ là Visual C# sau đó bấm “OK”. Khi đã tạo xong, bạn sẽ thấy một số Folder/File được đưa vào trong Solution Explorer (Hình 2).
Hình 2: Các Folder và File trong Dynamic
Hình 3: Tạo Cơ sở dữ liệu
Hình 4: SQL Server Database [LEFT]Để tạo Table cho “My_Database”, trong “Database Explore” chúng click chuột phải vào Folder “Table” chọn “Add New Table”. Trong ví dụ này chúng ta sẽ tạo 2 bảng: SanPham gồm các trường: Id, TenSanPham, DonGia, SoLuong, LoaiSanPham (Hình 5).
Hình 5: Bảng SanPham trong CSDL My_Database.mdf
Hình 6: Bảng LoaiSanPham trong CSDL My_Database.mdf
Hình 7: Thêm Cơ sở dữ liệu đã có
Hình 8: Chọn Cơ sở dữ liệu đã có
Hình 9
Hình 10: Tạo ADO.NET Entity Data Model
Hình 11
Hình 12
Hình 13
Hình 14
Hình 15
Hình 16: Tạo liên kết giữa bảng LoaiSanPham với bảng SanPham public partial class My_DatabaseEntities :global::System.Data.Objects.ObjectContex
Chúng ta phải đăng ký My_DatabaseEntities với hệ thống DynamicData. Mở file Global.asax, thêm Sửa: //model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
Thành: model.RegisterContext(typeof (My_DatabaseEntities), new ContextConfiguration() { ScaffoldAllTables = true });
Khi đó chúng ta được file Golobal.asax như sau:Chúng ta vào Deburg→StartDebugging (hoặc F5) để chạy thử chương trình. Kết quả khi chạy chương trình (Hình 17).
Hình 17Khi click vào LoaiSanPhams kết quả như hình 18.
Hình 18 Khi click vào SanPhams kết quả như hình 19.
Hình 191.5. Thêm Custom Metadata vào Model Để thêm tùy biến các mục, chúng ta cần tạo lớp Metadata để nó cung cấp cho hệ thống Dynamic Data thông tin về các thực thể. Đầu tiên bạn cần tạo thêm một lớp partial với cùng tên của lớp entity trong mô hình dữ liệu, sau đó muốn thay đổi thuộc tính lên lớp này phải chỉ ra lớp Metadata cho lớp này. Trong ví dụ này chúng ta sẽ 2 lớp partial có tên là: LoaiSanPham và SanPham. Để thêm 2 lớp này chúng ta làm như sau: Click chuột phải vào “Add_Code” chọn “Add New Item”, trong hộp thoại “Add New Item”, chọn “Class”, đặt tên cho file là “MyClass.cs”, chọn ngôn ngữ là “Visual C#”, sau đó bấm “Add” (Hình 20).
Hình 20: Thêm file MyClass.cs Mở file “MyClass.cs” khai báo thêm các namespace sau: using System.Web.DynamicData; using System.ComponentModel.DataAnnotations; using System.ComponentModel;
Thêm 2 lớp partial có tên là: LoaiSanPham, SanPham và tên lớp của MetadataType trong namespace My_DatabaseModel. namespace My_DatabaseModel { [MetadataType(typeof(LoaiSanPham_Metadata))] public partial class LoaiSanPham { public class LoaiSanPham_Metadata { } } [MetadataType(typeof(SanPham_Metadata))] public partial class SanPham { public class SanPham_Metadata { } } }
Trong ví dụ này sử dụng các thuộc tính TableName, DisplayName để thay đổi giao diện hiện thị cho 2 bảng LoaiSanPham và SanPham. Sử dụng Required để kiểu tra việc nhập dữ liệu cho trường “SoLuong” và “DonGia” của bảng SanPham. Sử dụng ScaffoldColumn để ẩn trường “Id” của 2 bảng. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.DynamicData; using System.ComponentModel.DataAnnotations; using System.ComponentModel; namespace My_DatabaseModel { /// /// Thay đổi cho các thuộc tính cho 2 bảng SanPham và LoaiSanPham /// [MetadataType(typeof(LoaiSanPham_Metadata))] public partial class LoaiSanPham { partial void OnTenLoaiSanPhamChanging(string value) { if (Char.IsLower(value[0]))//Kiểm tự đầu tiên phải có phải là chữ hoa { throw new ValidationException("Tên loại sản phẩm ký tự đầu tiên phải là chữ hoa!"); } } [TableName("Loại sản phẩm")]//Sửa lại tên bảng "LoaiSanPham" thành "Loại sản phẩm" public class LoaiSanPham_Metadata { [ScaffoldColumn(false)]//// Ẩn cột Id public object Id { get; set; } [DisplayName("Tên loại sản phẩm")]//Sửa lại tên hiển thị cho trường TenLoaiSanPham public object TenLoaiSanPham { get; set; } [DisplayName("Sản phẩm")] public object SanPham { get; set; } } } [MetadataType(typeof(SanPham_Metadata))] public partial class SanPham { partial void OnTenSanPhamChanging(string value) { if (Char.IsLower(value[0]))//Kiểm tự đầu tiên phải có phải là chữ hoa { throw new ValidationException("Tên sản phẩm ký tự đầu tiên phải là chữ hoa!"); } } [TableName("Sản phẩm")]//Sửa lại tên bảng "SanPham" thành "Sản phẩm" public class SanPham_Metadata { [ScaffoldColumn(false)]// Ẩn cột Id public object Id { get; set; } [DisplayName("Tên sản phẩm")]//Sửa lại tên hiển thị cho trường TenLoaiSanPham public object TenSanPham { get; set; } [DisplayName("Số lượng")] [Required] [Range(0, 300)]//Nhập số lượng trong khoảng từ 0 đến 300 public object SoLuong { get; set; } [DisplayName("Đơn giá")] [Required] [Range(100000, 3000000000)]//Nhập đơn giá trong khoảng từ 100.000 đến 3.000.000.000 public object DonGia { get; set; } [DisplayName("Loại sản phẩm")] public object LoaiSanPham { get; set; } } } }
Để sửa lại đổi giao diện của trang Master chúng ta mở file “Site.master”. Ví dụ chúng ta một số nội dung do chương trình tạo ra bằng tiếng Anh và thay bằng tiếng Việt. Sửa: Dynamic Data Site
Thành: Dynamic Data VỚI ADO.NET Entity Framework
Sửa:
Back to home page Thành:
Trở về trang chủ Trong file “Details.aspx” sửa một số giao diện tiếng Anh và thay bằng tiếng Việt. Chi tiết một bản ghi của bảng
Trong file “Edit.aspx” sửa lại


Blog mới nhất




