1. Trang chủ
  2. » Công Nghệ Thông Tin

hướng dẫn lập trình winform và webform với c#.net [hướng dẫn thực hành một số ứng dụng cơ bản]

22 2,8K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 879,87 KB

Nội dung

BÀI 4: THIẾT KẾ ENTITY DATA MODEL – PART 1: DATABASE FIRST Là thành phần trung gian giữa ứng dụng và database, Entity Data Model EDM giúp tạo liên kết và mô tả giữa nguồn dữ liệu vật lý

Trang 1

BÀI 1: ỨNG DỤNG CONTROL WEBBROWSER XÂY DỰNG FORM HỖ TRỢ TRỰC TUYẾN NHƯ TRÊN WEBSITE

+ Bài viết này giúp các bạn xây dựng chức năng hỗ trợ trực tuyến cho ứng dụng của bạn thông qua nick yahoo, skype

+ Để xây dựng chức năng này ta dùng Control WebBrowser có sẵn trong net

Trang 2

B2 : Vào hàm khởi tạo của Form chúng ta viết đoạn mã để chèn các đoạn mã Html

của chức năng hỗ trợ trực tuyến

Trang 3

B3: Lưu lại và chạy chương trình để có kết quả mong muốn

Trang 4

BÀI 2: ĐỊNH DẠNG KIỂU DATETIME C#

Trong bài này sẽ hướng dẫn cách định dạng kiểu ngày tháng trong C#, sử dụng hàm String.Format Tất cả các kiểu định dạng cũng có thể dùng

DateTime.ToString

Tùy chỉnh định dạng ngày tháng

Có các định dạng tùy chỉnh sau đây: y (năm), M (tháng), d (ngày), h (giờ 12), H (giờ 24), m (phút), s (thứ hai), f (phần nhỏ của giây), F (phần nhỏ của giây, không bao gồm

số 0 sau cùng), t (PM hoặc AM) và z (múi giờ)

Những ví dụ sau minh họa cụ thể giá trị đầu ra của các kiểu định dạng

/Khởi tạo thời gian date time 2008-03-09 16:05:07.123

DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" năm

String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" tháng

String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" ngày

String.Format("{0:h hh H HH}", dt); // "4 04 16 16" giờ 12/24

String.Format("{0:m mm}", dt); // "5 05" phút

String.Format("{0:s ss}", dt); // "7 07" giây

String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" phần nhỏ của giây

String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" phần nhỏ của giây (không

có số 0)

String.Format("{0:t tt}", dt); // "P PM" A.M or P.M

String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" muối giờ

Sử dụng dấu phân cách”/” , “:” Các ký tư này sẻ được chèn vào kết quả đầu ra, để xác đinh thời gian

//Dấu phân cách trong định dạng của người Đức là "." (chuyển "/" =>".")

String.Format("{0:d/M/yyyy HH:mm:ss}", dt);// "9/3/2008 16:05:07" - english (en-US) String.Format("{0:d/M/yyyy HH:mm:ss}", dt);// "9.3.2008 16:05:07" - german (de-DE) //Dưới đây là một vài ví dụ về tùy chỉnh định dạng kiểu DateTime

//Định dạng tháng/ngày/năm với ký tự "0" và không có ký tự "0"

String.Format("{0:M/d/yyyy}", dt); // "3/9/2008"

String.Format("{0:MM/dd/yyyy}", dt); // "03/09/2008"

//Lấy tên của ngày/tháng

String.Format("{0:ddd, MMM d, yyyy}", dt); // "Sun, Mar 9, 2008"

String.Format("{0:dddd, MMMM d, yyyy}", dt); // "Sunday, March 9, 2008"

//Lấy năm với 2, 4 ký tự

String.Format("{0:MM/dd/yy}", dt); // "03/09/08"

String.Format("{0:MM/dd/yyyy}", dt); // "03/09/2008"

Định dạng Datetime với các kiểu mẫu được định sẳn

Trong DateTimeFormatInfo có các kiểu mẫu định sẳn cho các culture hiện hành Ví dụ

ShortTimePattern định dạng h:mm tt cho en-US culture và định dạng HH:mm cho

Trang 5

G (combination of d and t) M/d/yyyy h:mm tt

G (combination of d and T) M/d/yyyy h:mm:ss tt

(*) = không phụ thuộc vào culture

Ví dụ sau minh họa cách sử dụng kiểu mẫu định sẳn

String.Format("{0:t}", dt); // "4:05 PM" ShortTime

String.Format("{0:d}", dt); // "3/9/2008" ShortDate

String.Format("{0:T}", dt); // "4:05:07 PM" LongTime

String.Format("{0:D}", dt); // "Sunday, March 09, 2008" LongDate

String.Format("{0:f}", dt);//"Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime String.Format("{0:F}", dt);//"Sunday, March 09, 2008 4:05:07 PM" FullDateTime

String.Format("{0:g}", dt);//"3/9/2008 4:05 PM" ShortDate+ShortTime

String.Format("{0:G}", dt);//"3/9/2008 4:05:07 PM" ShortDate+LongTime

String.Format("{0:m}", dt); // "March 09" MonthDay

String.Format("{0:y}", dt); // "March, 2008" YearMonth

String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123

String.Format("{0:s}", dt); // "2008-03-09T16:05:07" SortableDateTime

String.Format("{0:u}", dt); // "2008-03-09 1

Trang 6

BÀI 3: TẠO MÃ AN TOÀN (CAPTCHA IMAGE) CHO WEBSITE

Nhằm ngăn chặn việc submit data liên tục về Web Server chúng ta sẽ ra một vài

chữ trên 1 tấm hình và buộc người dùng phải đọc những chữ đó và nhập lại việc này máy sẽ làm chưa được nếu chữ trên hình càng ngoằn ngèo Mình sẽ hướng dẫn các bạn 1 cách tạo ra tấm hình đó với c# và asp.net

Sử dụng thư viện Drawing trong c#

Chúng ta cần sử dụng thư viện Drawing trong c# để làm chuyện này

Tạo mới 1 tấm hình rất đơn giản

Đoạn code dưới đây giúp bạn tạo ra một tấm hình bitmap và dùng đối tượng Graphics để vẽ mọi thứ có thể như chữ, đường thẳng, hình chữ nhật, lên tấm hình bitmap

Bitmap bmp = new Bitmap(_width, _height);

Graphics g = Graphics.FromImage(bmp);

Tạo background cho hình - tăng độ khó nhận dạng cho máy

Giúp chúng ta có một background với 2 màu trộn lẫn

// Fill in the background

Rectangle rect = new Rectangle(0, 0, _width, _height);

HatchBrush hatchBrush = new HatchBrush(HatchStyle.SmallConfetti,

Color.Black, Color.Gray);

g.FillRectangle(hatchBrush, rect);

Tạo chữ ngẩu nhiên với đối tượng Ramdom

Giúp tăng tính đa dạng của chữ thể hiện

// Get random text

string text = "qwertyuiopasdfghjklzxcvbnm";

string s = "";

for (int i = 0; i < 7; i++) {

s += text[rnd.Next(0, text.Length - 1)];

}

// Draw text on the Image

Font f = new Font("Bradley Hand ITC", 20, FontStyle.Bold);

Point p = new Point(1, -3);

g.DrawString(s, f, Brushes.Black, p);

Cách sử dụng

Xem đoạn code ứng dụng tấm hình này vào trang web

protected void Page_Load(object sender, EventArgs e)

Trang 7

}

Trang 8

BÀI 4: THIẾT KẾ ENTITY DATA MODEL – PART 1: DATABASE FIRST

Là thành phần trung gian giữa ứng dụng và database, Entity Data Model (EDM) giúp tạo liên kết và mô tả giữa nguồn dữ liệu vật lý và các đối tượng bussiness (hay object layer) trong ứng dụng Dựa vào sự lựa chọn thành phần nào sẽ

được tạo ra trước, một ứng dụng Entity Framework (EF) có thể sử dụng 1 trong

3 cách tiếp cận: Database First, Model First và Code First

Là thành phần trung gian giữa ứng dụng và database, Entity Data Model (EDM) giúp tạo liên kết và mô tả giữa nguồn dữ liệu vật lý và các đối tượng bussiness (hay object layer) trong ứng dụng Dựa vào sự lựa chọn thành phần nào sẽ được tạo ra trước, một ứng dụng Entity Framework (EF) có thể sử dụng 1 trong 3 cách tiếp cận:

Database First, Model First và Code First

Các sơ đồ dưới đây minh hoạt mối quan hệ và thứ tự tạo ra giữa các thành phần dữ liệu trong ứng dụng của Entity Framework Phần Model tương ứng với tập tin edmx, Code tương ứng với tập tin cs (hoặc vb nếu bạn dùng VB.NET)

Note: Bạn có thể nhận thấy rằng phần Model luôn được theo sau bởi Code, điều này

là nhờ công cụ Entity Data Model Designer trong Visual tự động tạo ra code tương ứng mỗi khi bạn thực hiện chỉnh sửa tập tin edmx

Database First:

Đây là cách thông thường và được hỗ trợ từ phiên bản EF 1 trong Visual Studio 2008

EF sẽ tự động tạo ra data model và các class (object layer) cho bạn từ database có sẵn thông qua công cụ Entity Data Model Wizard Bạn có thể thay đổi data model và cập nhật lại vào database Đây là cách tiếp cận phổ biến vì cách thực hiện đơn giản, nhanh chóng

Model First:

Hướng tiếp cận này được bổ sung từ phiên bản EF 4 trong Visual 2010

Bạn có thể tạo một data model rỗng bằng công cụ Entity Data Model Designer, khi đó object layer cũng tự động được sinh ra Sau khi đã hoàn thành việc thiết kế, bạn có thể sử dụng chức năng Generate Database from Model để tạo ra các mã DDL (data

Trang 9

definition language) dựa trên mã SSDL (Store Schema Definition Language) Các mã DDL này sẽ được thực thi và lưu thành tập tin sql

Code First:

Với phiên bản EF 4 bạn cần phải cài thêm thư viện EF Feature CTP (Community Technology Preview) để sử dụng Tuy nhiên tính năng này đã được tích hợp vào trong phiên bản EF 4.1 và với phiên bản VS 2010 hiện tại thì bạn cần phải download để cài đặt thủ công

Hướng tiếp cận này bỏ qua phần Model (.edmx), bạn có thể thiết kế các class tương ứng với các table của database mà bạn cần làm việc hoặc muốn tạo ra Với hướng tiếp cận này, bạn sẽ sử dụng class DbContext thay vì ObjectContext để thao tác với database Việc sử dụng Code First đòi hỏi bạn phải thực hiện các công việc một cách thủ công nhưng bù lại nó linh hoạt và được sử dụng rất phổ biến

Tạo EDM theo hướng Database First (Step by Step)

Phần này bạn sẽ được hướng dẫn cách tạo một Entity Data Model từng bước dựa vào công cụ Entity Data Model Designer Dữ liệu nguồn được sử dụng trong ví dụ là

Northwind (download

tạihttp://www.microsoft.com/download/en/details.aspx?id=23654)

Bước 1: Tạo dự án mới với kiểu là Console Application

Bước 2: Nhấn Add New Item (Ctrl+Shift+A) trên thanh công cụ và chọn mục

ADO.NET Entity Data Model trong hộp thoại hiện ra Đặt tên mục sắp thêm vào là

NorthwindModel với phần mở rộng mặc định là edmx Nhấn Add

Bước 3: Cửa sổ Entity Data Model Wizard hiện ra Bước này để xác định bạn sẽ tạo

model từ database có sẵn hoặc một model rỗng Bạn để lựa chọn mặc định là

Generate from database và nhấn Next

Trang 10

Bước 4: Bước này bạn cần chọn database nào sẽ sử dụng Chuỗi kết nối sẽ tự động

được sinh trong phần Entity connection string Với tùy chọn Save entity connection settings in App.Config, chuỗi kết nối này sẽ tự động được thêm vào tập tin App.Config, nhờ đó bạn không cần nhớ chuỗi kết nối mà chỉ cần nhớ tên của kết nối là

NorthwindEntities

Trang 11

Trong trường hợp bạn chưa có sẵn kết nối với database nào, hãy nhấn nút New

Connection… Các kết nối mà bạn đã tạo sẽ hiện ra trong cửa sổ Server Explorer Nhấn Next

Bước 5: Lựa chọn các table, view và stored procedure bạn muốn sử dụng Trong ví

dụ này, tôi chỉ sử dụng ba table là Orders, Order Details và Products

Trang 12

Sau khi nhấn Finish, tập tin NorthwindModel.edmx sẽ được thêm vào Solution

Explorer Đây là tập tin có dạng xml và được mở với trình mặc định ADO.NET Entity Data Model Designer với giao diện trực quan như hình dưới Nếu muốn coi nội dung của tập tin này dưới dạng văn bản xml, bạn nhấn chuột phải vào tập tin trong Solution

Explorer > Open With… và chọn XML Editor Bạn có thể coi các thông tin đầy đủ của

model trong cửa sổ Model Browser và Mapping Details

Trang 13

Ngoài tập tin edmx trên, một tập tin khác cũng được tự động tạo ra

là NorthwindModel.Designer.cs Tập tin này chứa code C# được sinh ra cho các

class bạn sẽ sử dụng trực tiếp khi lập trình Các class này được gọi là Object Layer (là phần Object Services trong kiến trúc của Entity Framework)

Khảo sát tập tin này, bạn sẽ thấy nó bao gồm các class là: NorthwindEntities, Order, Order_Detail và Product Trong đó, class NorthwindEntities chính là class thừa kế từ ObjectContext mà bạn cần sử dụng để tạo kết nối và thao tác với database

Kiểm tra kết quả với LINQ to Entities

Việc sử dụng LINQ to Entities rất đơn giản, tương tự như LINQ to SQL Bạn chỉ cần làm việc với các class của object layer và property của chúng Ví dụ sau in ra các sản phẩm có CategoryID là 1 trong bảng Products:

?

//

Trang 15

BÀI 5: TỔNG QUAN KIẾN TRÚC CỦA ENTITY FRAMEWORK

ADO.NET Entity Framework là một nền tảng được sử dụng để làm việc với

database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM) Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình

ADO.NET Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM) Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình

Kiến trúc của Entity Framework được minh họa như sau:

Các nội dung dưới đây sẽ đi vào giải thích từng phần trong sơ đồ trên Trong giới hạn của bài viết, tôi chỉ đi khái quát để bạn nắm được nội dung chính Trong thực tế, bạn cũng không cần biết sâu hơn về kiến trúc bên dưới trừ những mục đích đặc biệt

- ObjectSet<TEntity> là một một tập hợp các entity Mỗi đối tượng này tương ứng với một table Có thể lấy được các đối tượng này thông qua các property tương ứng

Trang 16

trong database Khác biệt chính giữa hai loại này là ComplexObject không chứa

primary key

- EntityCollection<TEntity> và EntityReference<TEntity>: là các đối tượng thể hiện mối quan hệ (relationship) giữa hai entity class Mỗi đối tượng này có thể được truy xuất thông qua các property của entity class

Ta có bảng ánh xạ tương đương sau giữa các đối tượng trong database và EF:

Ví dụ sau cho thấy cách tạo một đối tượng ObjectContext từ mô hình dữ liệu

NorthwindEntities (tên của connection string được lưu trong app.config), sau đó sử dụng LINQ to Entities để lấy ra các sản phẩm (trong bảng Products) có tên bắt đầu bằng “G” và in ra màn:

Entity Data Model

Entity Data Model (EDM) là mô hình dữ liệu được mô tả thông qua các ngôn ngữ theo chuẩn XML EDM được chia làm 3 lớp là: Conceptual, Mapping và Logical Mỗi lớp này được định nghĩa bởi ngôn ngữ riêng theo định dạng XML:

Trang 17

- Conceptual – Conceptual Schema Definition Language (CSDL): là ngôn ngữ

định nghĩa các entity, relationship, hàm trong tập tin với phần mở rộng csdl Có thể tạo được các entity class (object layer)

- Mapping – Mapping specification language (MSL): định nghĩa các ánh xạ giữa

lớp conceptual và logical, nội dung này được lưu trong tập tin msl

- Logical – Store Schema Definition Language (SSDL): định nghĩa mô hình lưu

trữ của dữ liệu, lưu trữ trong tập tin ssdl

Tham khảo thêm: CSDL, SSDL, and MSL Specifications

Các nội dung của ba tập tin csdl, msl và ssdl được lưu trữ trong cùng tập tin

.edmx trong Visual Studio Tập tin này có thể được tạo ra tự động từ database và

công cụ Entity Framework Model Wizard của Visual Studio Trong quá trình biên dịch, các tập tin csdl, msl và ssdl sẽ được tạo ra dựa vào tập tin edmx này

Note: Khi mở tập tin edmx này, VS tự động hiển thị giao diện trực quan của nó bằng

công cụ mặc định là ADO.NET Entity Data Model Designer Để xem nội dung của tập

tin này, bạn nhấn chuột phải, nhấnOpen with… và chọn mục XML Editor hoặc một

trình xem dưới dạng văn bản bất kì

EntityClient Data Provider

EntityClient là một data provider mới của ADO.NET dùng để truy xuất đến database Được xây dựng bên trên các ADO.NET data provider cơ bản, EntityClient không truy xuất trực tiếp dữ liệu mà thông qua các data provider khác dựa vào các thông tin dữ liệu từ Entity Data Model

EntityClient cũng bao gồm các lớp giống như các ADO.NET data provider khác và tên lớp được đặt với tiền tố Entity Ví dụ bạn có thể tạo kết nối bằng EntityConnection, tạo các câu truy vấn bằngEntityCommand và đọc kết quả bằng EntityDataReader

Một điểm khác biệt với các data provider khác là EntityClient sử dụng Entity SQL để truy vấn dữ liệu Các lệnh Entity SQL sẽ được chuyển thành một cấu trúc lệnh dạng cây (command tree) và chuyển xuống cho các data provider khác

Ví dụ sau sử dụng EntityClient để tạo kết nối, tạo đối tượng EntityCommand và sử dụng tham số để lấy các sản phẩm có CategoryID là 1:

?

int categoryID = 1;

using (EntityConnection con = new EntityConnection("Name=NorthwindEntities"))

Ngày đăng: 17/10/2014, 07:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w