Cách tiếp theo để xây dựng 1 ứng dụng phần mềm là Database First, tức là xây dựng cơ sở dữ liệu trước rồi mới đến việc xây dựng mã nguồn ứng dụng. Database First cho phép chúng ta đảo ngược 1 mô hình từ 1 database đã tồn tại từ trước. Mô hình này được lưu trong tập tin tên là EDMX (.edmx) và có thể xem và chỉnh sửa trong Entity Framework Designer (phần thiết kế Entity Framework). Các lớp tương tác trong ứng dụng sẽ được tự động phát sinh từ tập tin EDMX.
4.1. Tạo 1 database
Trước hết, bạn phải tạo 1 database để có thể truy cập dữ liệu. Server database có thể cài đặt ở những nơi khác nhau tùy thuộc vào phiên bản Visual Studio.
• Nếu VS 2010 thì bạn tạo trong SQL Express
• Nếu dùng VS 2012 thì bạn tạo trong LocalDb
• Hoặc bạn cũng có thể tạo bất kỳ đầu miễn là SQL Server
Để tạo database trong Visual Studio, chọn View -> Server Explorer. Chuột phải vào Database Connections -> Add Connections… Bạn có thể kết nối với (localdb)\v11.0 hoặc SQL Express .\SQLEXPRESS tùy theo cái nào bạn đã cài. Sau đó điền tên database là TutorialDatabaseFirst.
Tiếp đến chọn OK, bạn sẽ được hỏi tạo mới database vừa đặt tên, chọn Yes để tạo mới database. Sau đó, chuột phải lên database vừa tạo, chọn New Query và copy & paste đoạn script sql, và nhấn Excute (Ctrl + Shift + E) để thực thi.
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (200) NULL,
[Url] NVARCHAR (200) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId])
REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);
Thực thi đoạn script sql để tạo mới các bảng cho database.
4.2. Tạo ứng dụng
Sau khi tạo database xong, chúng ta sẽ xây dựng 1 ứng dụng C# console dùng Database First để thực hiện truy cập. Mở Visual Studio, chọn File -> New -> Project… Chọn Visual C# từ bên menu trái và chọn Console Application, đặt tên dự án là TutorialDatabaseFirst, chọn OK.
4.3. Xây dựng mô hình
Bước tiếp theo là xây dựng mô hình bằng cách sử dụng Entity Framework Designer, được tích hợp sẵn trong Visual Studio.
Với VS 2013, chọn Project -> Add New Item…, sau đó chọn Data từ menu trái và chọn ADO.NET Entity Data Model, điền tên cho mô hình là TutorialModel và nhấn OK. Sau đó 1 cửa sổ Entity Data Model Wizard sẽ hiện lên, chúng ta chọn EF Designer from database, nhấn Next và chọn database cũng như đặt tên cho chuỗi kết nối tới database là TutorialDatabaseFirstEntities.
Trong cửa sổ Entity Data Model Wizard, nhấn chọn Tables để chọn các bảng sẽ được gieo thành các lớp mã nguồn, sau đó nhấn Finish.
Sau khi bạn nhấn Finish để tạo mô hình, tập tin EDMX được tạo với nội dung là 1 mô hình database như hình sau.
4.4. Đọc và ghi dữ liệu
Từ mô hình đã xây dựng được, các bạn có thể truy cập dữ liệu dựa trên tập tin EDMX với các tập tin con là TutorialModel.tt và TutorialModel.Context.tt.
Sau đó thực hiện đoạn mã sau để thêm 1 Blog mới và sau đó hiển thị tất cả các Blog từ database sắp xếp theo thứ tự chữ cái theo Name.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TutorialDatabaseFirst
{
class Program
{
static void Main(string[] args)
{
// TutorialDatabaseFirstEntities kế thừa từ DbContext
using (var db = new TutorialDatabaseFirstEntities())
{
// Tạo và lưu 1 blog mới vào database
Console.Write("Dien ten cua 1 blog moi: ");
var name = Console.ReadLine();
var blog = new Blog { Name = name };
db.Blogs.Add(blog);
db.SaveChanges();
// Hiển thị tất cả các blog trong database
var query = from b in db.Blogs
orderby b.Name
select b;
Console.WriteLine("Tat ca cac blog trong database:");
foreach (var item in query)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("Nhan bat ky phim nao de thoat");
Console.ReadKey();
}
}
}
}
4.5. Vấn đề thay đổi mô hình
Nếu database thay đổi thì bạn có thể dễ dàng thay đổi mô hình mã nguồn. Trong database, chúng ta thêm 1 bảng Users mới bằng đoạn query như sau:
CREATE TABLE [dbo].[Users]
(
[Username] NVARCHAR(50) NOT NULL PRIMARY KEY,
[DisplayName] NVARCHAR(MAX) NULL
)
Sau đó để cập nhật mô hình, chúng ta mở file EDMX, chuột phải chọn Update Model from Database… để bật cửa sổ Update Wizard. Ở tab Add của Update Wizard chọn Tables, sau đó chọn bảng mới cần gieo mã nguồn. Tab Refresh để làm tươi các bảng trong mô hình, tab Delete để xóa bất kỳ bảng nào bạn không muốn có mặt trong mô hình.
Nhấn Ctrl + Save để lưu nội dung tập tin EDMX lại, khi đó VS sẽ tự động gieo mã nguồn và thêm lớp mới User.cs.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TutorialDatabaseFirst
{
using System;
using System.Collections.Generic;
public partial class User
{
public string Username { get; set; }
public string DisplayName { get; set; }
}
}
Kết luận: Bài viết này giúp bạn nắm cách cơ bản để gieo mã nguồn từ database bằng Entity Framework, tương tác với database và thay đổi mô hình khi cần thiết. Bài tiếp theo sẽ hướng dẫn cách tạo mô hình trước(Model First)