Sử dụng Entity framework Code first với CSDL SQL Server có sẵn

Một phần của tài liệu Báo cáo tìm hiểu mô hình mvvm (Trang 39 - 46)

CHƯƠNG 2: TỔNG QUAN VỀ LẬP TRÌNH WPF VÀ NGÔN NGỮ ĐÁNH DẤU

2.3 Sử dụng Entity framework Code first với CSDL SQL Server có sẵn

Entity Framework là một bộ ánh xạ đối tượng – quan hệ cho phép người lập trình .NET làm việc với dữ liệu quan hệ qua các đối tƣợng (object) nó giúp lập trình viên không cần viết mã cho (hầu hết) những gì liên quan đến truy cập dữ liệu.

-40- Trong Entity Framework:

+ Code là mã lệnh tạo thành các lớp đối tƣợng dữ liệu cho phép thao tác với dữ liệu.

+ Model là sơ đồ gồm các hộp mô tả các thực thể và các đường nối kết mô tả các quan hệ.

+ Database là cơ sở dữ liệu (có thể là SQL Server, Compact SQL Server, Local database, MySQL, Oracle,…)

Có 3 cách sử dụng Entity Framework (EF): Database First, Models First và Code First.

Nguồn: yinyangit.wordpress.com Theo khuyến cáo của Microsoft:

Database first: là phương pháp chỉ nên dùng khi ta đã có sẵn CSDL (không phải tạo), EF Wizard sẽ tạo Model và Code cho ta.

Model first: nên dùng khi ta bắt đầu thiết kế CSDL từ đầu (từ chƣa có gì). Ta sẽ thiết kế mô hình CSDL (Model) EF sẽ tự tạo code cho ta, sau đó nhờ EF Wizard tạo CSDL.

Code first: nên dùng khi đã có mô hình CSDL, ta sẽ chỉ viết code từ đó tạo Database.

Dù cách nào thì cuối cùng cũng phải có Code để thao tác trong mã lệnh và Database để lưu trữ dữ liệu. Model chỉ là một thành phần trung gian.

Theo kinh nghiệm của nhiều lập trình viên đi trước, Code First là phương án mềm dẻo nhất (hơi mất công ngồi gõ code, tuy nhiên nếu dùng tốt code snippets thì đỡ nhiều).

-41-

Trước đây khi lập trình CSDL trong VB, VC,… ta luôn tạo CSDL liệu trước, sau đó mới xây dựng mã lệnh truy cập dữ liệu.

Các bước thực hiện trong Visual Studio 2013:

1. Tạo project

2. Cài EF Power Tools vào Visual Studio: Tools -> Library Paskage Manager ->

Manage NuGet Packages for Solution…

Hình 7 Màn hình cập nhật Entity Framework Power Tools Màn hình sau xuất hiện:

Hình 8 Màn hình cài đặt Entity Framework Power Tools

-42-

Bên trái, chọn Online. Nhập Entity Framework Power Tools vào khung Search (góc trên, bên phải) chọn Entity Framework Power Tools -> Install. Khi đã cài đƣợc, bạn chuột phải trên tên Project sẽ thấy có menu Entity Framework.

3. Tạo code từ CSDL có sẵn

Chuột phải trên tên project -> chọn Entity Framework -> Reverse Engineer Code First

Màn hình sau xuất hiện:

-43-

Hình 9 Kết nối với Database Chọn Server và tên CSDL đã có -> Ok.

Nhìn trên Solution Explorer sẽ thấy có thêm folder Models trong đó có các class và mapping do EF đã tự tạo.

4. Sử dụng dữ liệu

Để ví dụ việc sử dụng dữ liệu, ta thực hiện window nhƣ sau:

Mã XAML của window trên nhƣ sau:

-44- 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

<Window

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:Models="clr-namespace:testEFCodeFirstWithExistingDB.Models"

mc:Ignorable="d" x:Class="testEFCodeFirstWithExistingDB.MainWindow"

Title="MainWindow" Height="350" Width="525"

Loaded="Window_Loaded_1">

<Grid>

<Grid.RowDefinitions>

<RowDefinition/>

<RowDefinition/>

<RowDefinition Height="Auto"/>

</Grid.RowDefinitions>

<DataGrid Name="dgrDonVi" ItemsSource="{Binding}" Grid.Row="0"

SelectionMode="Single"/>

<DataGrid Name="dgrNhanVien" Grid.Row="1" ItemsSource="{Binding SelectedItem.NhanViens, ElementName=dgrDonVi}"/>

<Button Name="btnSave" Content="Lưu" Grid.Row="2"

HorizontalAlignment="Center" Width="100" Height="30"

Click="btnSave_Click_1"/>

</Grid>

</Window>

Code

-45- 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

using System.Windows;

using System.Data.Entity;

using testEFCodeFirstWithExistingDB.Models;

namespace testEFCodeFirstWithExistingDB {

/// <summary>

/// Interaction logic for MainWindow.xaml /// </summary>

public partial class MainWindow : Window {

TestEFContext data;

public MainWindow() {

InitializeComponent();

}

private void Window_Loaded_1(object sender, RoutedEventArgs e) {

data = new TestEFContext();

data.DonVis.Load();

dgrDonVi.DataContext = data.DonVis.Local;

}

private void btnSave_Click_1(object sender, RoutedEventArgs e)

-46- 26

27 28 29 30

{

data.SaveChanges();

} } }

Lưu ý:

+ Phương thức Load() để nạp dữ liệu. Phải có using System.Data.Entity mới có phương thức này (nó là extension method).

+ Trong WPF, không bind trực tiếp DataContext hoặc ItemsSource = data.DonVis.

Phải thông qua thuộc tính Local. Trong WinForm dùng ToList để bind:

data.DonVis.ToList().

Một phần của tài liệu Báo cáo tìm hiểu mô hình mvvm (Trang 39 - 46)

Tải bản đầy đủ (PDF)

(65 trang)