Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.81 MB, 76 trang )
Database First do không thể nắm và tối ưu hết được các công đoạn cần làm.
Chẳng hạn, chúng ta xây dựng bảng SinhVien dùng để lưu trữ sinh viên, nếu để
ý có thể thấy bảng SinhVien có thể dùng cho các module như: quản lý học
phần/điểm, quản lý sinh viên, quản lý thời khóa biểu, quản lý thư viện (mượn trả
sách), … Nếu xây dựng phần mềm theo các phương pháp khác, đơi khi chúng ta
khó nhìn tổng quan vì vậy có thể tạo bảng SinhVien lặp lại ở nhiều module con.
Model First cho phép bạn tạo 1 mơ hình dùng Entity Framework
Designer và sau đó gieo lược đồ cơ sở dữ liệu từ mơ hình. Mơ hình được lưu
trữ ở tập tin EDMX (.edmx) và có thể xem, chỉnh sửa ở Entity Framework
Designer. Các lớp tương tác với ứng dụng được tự động gieo từ tập tin EDMX.
Tương tự như Database First hay Code First, bạn cần có Visual Studio 2013 để
thực hiện ứng dụng. Nếu bạn xài VS 2010 hay VS 2012 bạn cần cài đặt thêm
gói NuGet.
1.
Tạo ứng dụng
Để các bạn dễ nắm bắt, chúng ta sẽ tạo 1 ứng dụng Console dùng Model First
để thực thi truy cập dữ liệu.
34
Mở Visual Studio, chọn File -> New -> Project…, chọn Visual C# và Console
Application, đặt tên ứng dụng là DammioModelFirst, sau đó nhấn OK.
2.
Tạo mơ hình
Để tạo mơ hình cho ứng dụng, chúng ta chọn Project, chuột phải -> Add -> Add
35
New Item…
Tiếp đến bạn chọn mục Data dưới mục Visual C# Items bên menu trái và
chọn ADO.NET Entity Data Model, đặc tên mơ hình là DammioModel, chọn
Empty EF Designer Model (hoặc Empty model) và nhấn Finish để hoàn thành.
36
37
Tiếp theo, tập tin DammioModel.edmx được mở ra với 1 mơ hình trống. Bây giờ
chúng ta sẽ tiếp hành xây dựng mơ hình bằng cách thêm mới các thực thể
(entity), thuộc tính và các mối quan hệ giữa các thực hiện trong mơ hình.
Rê chuột vào vùng trống, chuột phải chọn Properties. Trong cửa sổ Properties,
chúng ta có thể thay đổi tên thuộc tính “Entity Container Name” với giá trị
là DammioModelContainer thành BloggingContext hay bất cứ tên nào bạn
muốn.
Đây là tên context kế thừa từ lớp DbContext sẽ được tự động gieo mã nguồn,
context thể hiện 1 phiên làm việc với database, cho phép chúng ta truy vấn và
lưu trữ dữ liệu.
Tiếp đến, chúng ta tạo 1 thực thể bằng cách chuột phải lên vùng trống,
chọn Add New -> Entity… Đặt tên thực thể là Blog và BlogId là khóa chính,
sau đó nhấn OK.
38
Để tạo thêm thuộc tính cho thực thể Blog, chọn thực thể này, chuột phải
chọn Add New -> Scalar Property, điền Name là tên thuộc tính.
39
Chuột phải lên thuộc tính Name, chọn Properties, lúc này chúng ta sẽ có được
cửa số Properties cho thuộc tính Name.
Trong cửa sổ Properties của thuộc tính Name, chúng ta có các mục chính sau:
●
●
●
●
●
●
●
●
Default Value: là giá trị mặc định của thuộc tính, đặt (None) nghĩa là khơng có giá
trị mặc định
Entity Key: đặt khóa của thực thể (True/False)
Fixed Length: chiều dài cố định của thuộc tính (True/False)
Getter/Setter: phạm vi truy cập của 2 thuộc tính Getter/Setter (Public, Protected,
Private, Internal)
Max Length: chiều dài tối đa
Name: tên thuộc tính
Nullable: cho phép thuộc tính có dữ liệu null hay khơng (None/True/False)
Type: kiểu dữ liệu của thuộc tính
Chúng ta lặp lại các bước trên cho thuộc tính Url, chuột phải lên thuộc tính Url
chọn Properties, đặt thuộc tính Nullable là True để cho phép thêm 1 Blog mới
mà không cần phải mô tả giá trị Url.
40
Chúng ta tạo thêm thực thể Post với PostId là khóa chính và 2 thuộc tính là Title
và Content.
Đến đây, chúng ta phải tạo thêm mối quan hệ giữa các bảng trong mơ hình.
Chuột phải là vùng trống giao diện, chọn Add New -> Association… Khi đó
chúng ta sẽ thấy sự xuất hiện của mối quan hệ giữa 2 thực thể vừa tạo.
Diễn giải quan hệ là 1 Blog chứa nhiều Post và 1 Post chỉ thuộc về 1 Blog. Mối
quan hệ giữa Blog và Post là 1 (One) và * (Many). Chúng ta có thêm 2 thuộc
tính điều hướng đó là: Posts và Blog. Hai thuộc tính này giúp lấy được giá trị của
thực thể Blog và Post mà không cần truy xuất trực tiếp các thực thể này. Thêm
khóa ngoại vào thực thể Post và nhấn dấu check, sau đó nhấn OK để tạo mối
quan hệ.
41
Sau khi tạo xong mối quan hệ, chúng ta có sơ đồ hồn chỉnh cho ví dụ đơn giản
như sau.
Việc tạo một mối liên hệ thừa kế (inheritance) tương tự như tạo association. Khi
tạo một thừa kế (inheritance) giữa hai entity, entity con sẽ được thừa hưởng tất
cả property của entity cha. Điều này tương ứng với mối quan hệ 1-1 trong
database.
Ví dụ Model có quan hệ thừa kế
42
3.
Gieo cơ sở dữ liệu
Với mơ hình cho trước, Entity Framework có thể tính 1 lược đồ database cho
phép chúng ta lưu trữ và rút trích dữ liệu bằng mơ hình. Tùy theo phiên bản
Visual Studio, bạn sẽ tạo database ở những nơi khác nhau.
●
●
Nếu bạn xài VS 2010, bạn sẽ tạo 1 SQL Express database
Nếu bạn xài VS 2012, bạn sẽ tạo 1 LocalDb database.
Tiếp theo, để gieo database, chọn chuột phải lên vùng trống, chọn Generate
Database from Model… Chọn New Connection… và đặc tả hệ cơ sở dữ liệu
như LocalDb ((localdb)\v11.0) hoặc SQL Express (.\SQLEXPRESS) hay bất cứ
hệ cơ sở dữ liệu nào bạn muốn để gieo mơ hình. Sau đó, điền tên
43
DammioModelFirst.Blogging là tên cơ sở dữ liệu và nhấn OK.
Bởi vì server tơi chọn chưa có database Test, một hộp thoại xác nhận hiện ra yêu
cầu tạo database này. Hãy nhấn OK để tiếp tục.
Trong cửa sổ wizard, nhấn Next và bạn sẽ thấy các mã DDL sẽ được tạo ra và
lưu trong tập tin Model1.edmx.sql. Nhấn Finish và tập tin .sql này sẽ được mở ra.
Bạn có thể thấy rằng các tên table sắp được tạo ra được tự động chuyển về
dạng số nhiều dựa vào tên của entity. Trong trường hợp này là entity Person sẽ
được chuyển thành table People.
44