1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Kỹ thuật >

Yêu cầu tiền quyết

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 )






Tích vào ơ MVC







Chọn OK



3.



Tạo Model



Bây giờ chúng ta sẽ tạo ra các Model đơn giản bằng các class.

Chúng ta sẽ tạo các class Model trong folder Models

Tạo 2 Model Artist và Song

public class Artist

{

public int ArtistId { get; set; }

public string Name { get; set; }

public virtual List Songs { get; set; }

}



public class Song

{

public int SongId { get; set; }

public string Title { get; set; }

53



public int ArtistId { get; set; }

public virtual Artist Artist { get; set; }

}

Trong 2 model trên có sử dụng 2 thuộc tính navigation virtual (Artist.Songs và Song.Artist). Cho

phép tính năng Lazy Loading của Entity Framework. Lazy Loading có nghĩa là nội dung của

thuộc tính sẽ tự động load từ cơ sở dữ liệu khi ta truy cập chúng.



4.



Tạo Context



Chúng ta phải định nghĩa 1 bối cảnh, thể hiện 1 phiên làm việc với database, cho phép thực thi truy vấn

và lưu trữ dữ liệu. Chúng ta xây dựng 1 bối cảnh kế thừa từ System.Data.Entity.DbContext và biểu diễn

dạng DbSet cho mỗi lớp trong mơ hình.

Để dùng các dạng của Entity Framework, cần cài đặt gói EntityFramework NuGet. Để cài đặt, chọn Tools

-> Library Package Manage -> Manage NuGet Packages for Solution…, chọn nuget.org, chọn gói

EntityFramework và nhấn Install để cài. Sau đó, thêm using System.Data.Entity;





Project –> Manage NuGet Packages… Nếu bạn không có Manage NuGet Packages… bạn có

thể cài bản mới nhất tại đây.







Chọn tab Browse







Chọn EntityFramework package







Nhấn Install



Chúng ta tạo lớp MusicContext kế thừa từ lớp DbContext, và thêm dòng lện

Using System.Data.Entity;

Lớp MusicContext:



public class MusicContext : DbContext

{

public DbSet Songs { get; set; }

public DbSet Artists { get; set; }

}



5.



Đọc và ghi dữ liệu



Tạo HomeController trong thư mục Controlers sử dụng MusicContext để truy vấn dữ liệu

public class HomeController : Controller

{

MusicContext musicDb = new MusicContext();

// GET: Home

public ActionResult Index()

{

musicDb.Artists.Add(new Artist() {ArtistId = 1, Name = "Adele" });

musicDb.Artists.Add(new Artist() { ArtistId = 2, Name = "Sam Smith" });

musicDb.Songs.Add(new Song() { SongId = 1, Title = "Hello", ArtistId = 1 });



54



musicDb.Songs.Add(new Song() { SongId = 2, Title = "Stay With Me", ArtistId = 2 });

musicDb.SaveChanges();

var albums = musicDb.Songs

.Include("Artist");

return View(albums);

}

}



Khi bạn sử dụng Lớp MusicContext lần đầu tiền Visual Studio sẽ tạo Cơ sỡ dữ liệu cho bạn.

//?? Generate như thế nào

Theo quy ước thì DbContext sẽ tạo ra một CSDL





Dữ liệu của bạn sẽ nằm ở local SQL Express instance nếu có (sẽ được cài đặt mặt định bởi

Visual Studio 2010).







Nếu khơng có SQL Express thì Code First will tạo CSDL trên LocalDb (được cài đặt mặt định bởi

Visual Studio 2012)







Tên CSDL sẽ được đặt theo tên đầy đủ của lớp Context trong trường hợp này

là CodeFirstNewDatabaseDemo.MusicContext



Có 1 số cách kết nối với database, bạn thử 1 trong các cách sau. Trong Server

Explorer ở Visual Studio, chọn View -> Server Explorer. Chuột phải chọn Data

Connections và chọn Add Connection… Tiếp theo

gõ (localdb)/Username hoặc .\SQLEXPRESS vào phần Server Name, sau đó

chọn database của bạn.



55



DbContext làm việc với các lớp trong mơ hình bằng cách nhìn các thuộc tính

DbSet mà chúng ta đã định nghĩa. Sau đó dùng tập mặc định các quy ước Code

First để xác định bảng và tên các cột, xác định kiểu dữ liệu, tìm các khóa chính,





56



6.



Giải quyết khi Model thay đổi



Cái hay nhất của Code First là cho phép thay đổi mơ hình code, từ đó thay đổi

ln database tùy ý. Để làm được việc này, chúng ta sẽ áp dụng 1 tính năng gọi

là Code First Migrations (dịch nơm na là tích hợp Code First), hay gọi là

Migrations cho ngắn gọn.

Migrations cho phép thiết lập 1 tập các bước mơ hình cách nâng cấp/bỏ bớt lược

đồ database. Ở mỗi bước, được xem là 1 migration, chứa đoạn mã mô tả các

thay đổi được áp dụng.



A new Migrations folder has been added to our project that contains two items:





Configuration.cs – This file contains the settings that Migrations will use for migrating

BloggingContext. We don’t need to change anything for this walkthrough, but here is where you

can specify seed data, register providers for other databases, changes the namespace that

migrations are generated in etc.







_InitialCreate.cs – This is your first migration, it represents the changes that have

already been applied to the database to take it from being an empty database to one that

includes the Blogs and Posts tables. Although we let Code First automatically create these tables

for us, now that we have opted in to Migrations they have been converted into a Migration. Code

First has also recorded in our local database that this Migration has already been applied. The

timestamp on the filename is used for ordering purposes.



Now let’s make a change to our model, add a Url property to the Blog class:



Bước đầu tiên là kích hoạt chế độ Code First Migration cho BloggingContext

bằng cách vào Toosl -> Library Package Manager -> Package Manager Console,

gõ dòng lệnh Enable-Migrations và nhấn Enter như hình.



57



Sau đó, bạn có thể thấy thư mục Migrations như trong hình sau.



Tiếp theo chúng ta thử thay đổi mơ hình, thêm thuộc tính Country vào lớp Artist

như sau:

1

public class Artist

2

{

3

public int ArtistId { get; set; }

4

public string Name { get; set; }

5

public string Country { get; set; } // thêm thuộc tính mới

6

public virtual List Songs { get; set; }

7

}

8

Sau đó chạy dòng lệnh Add-Migration AddCountry với AddCountry là tham số

tên, thật ra bạn đặt bất cứ tên gì cũng được. Khi chạy dòng lệnh trên, Migrations

sẽ kiểm tra lần tích hợp cuối của bạn và xây dựng 1 mơ hình mới với bất cứ thay

đổi được tìm thấy, sau đó sẽ thay đổi database cho phù hợp với mơ hình này.

Thậm chí, bạn có thể vào lớp AddCountry vừa tạo để chỉnh tay thêm/xóa các

trường cần thiết.

1

2

3

4

5

6

7

8

9

10

11

12



namespace CodeFirstNewDatabaseDemo.Migrations

{

using System;

using System.Data.Entity.Migrations;

public partial class AddCountry : DbMigration

{

public override void Up()

{

AddColumn("dbo.Artists", "Country", c => c.String());

}



58



Xem Thêm
Tải bản đầy đủ (.docx) (76 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×