2.1 .Tổng quan về FRAMEWORK
2.3. Công cụ Mygeneration
2.3.1. Khái quát về Mygeneration
Mygeneration là công cụ sinh mã chƣơng trình hỗ trợ các nhà phát triển để truy cập vào lƣợc đồ cơ sở dữ liệu. Nó rất hữu hiệu trong việc xây dựng các lớp thực thể dựa trên lƣợc đồ cơ sở dữ liệu. Mygenration đặc biệt rất thích hợp trong việc xây dựng ứng dụng đa tầng, nó hỗ trợ ở tầng truy cập dữ liệu. Mygeneration hỗ trợ Microsoft SQL, Microsoft Access, Oracle, IBM DB2, MySQL, PostgreSQL, FireBird, Interbase, SQLite, và VistaDB.
Mygeneration là phần mềm miễn phí mã nguồn mở và khá hoàn chỉnh. Hỗ trợ rất nhiều loại cơ sở dữ liệu và nhiều ngôn ngữ nhƣ: C#, VB.NET, jscript, vbscript…Và hỗ trợ đầu ra cho rất nhiều ngôn ngữ. Ta có thể tự viết mẫu template
hoặc sử dụng mẫu của ngƣời khác. Có rất nhiều mẫu sẵn có, một số đi kèm với chƣơng trình cài đặt, nhƣng nhiều hơn có thể tài từ thƣ viện của MyGeneration.
Trong luận văn này công cụ Mygeneration được sử dụng để sinh ra các lớp truy cập vào cơ sở dữ liệu. Do cấu trúc dữ liệu khá phức tạp, mối một đơn gồm nhiều thuộc tính thông tin, cho nên việc truy cập vào dữ liệu cũng sẽ rất phức tạp, nếu tự viết mã chương trình sẽ mất rất nhiều thời gian và bị lặp lại. Vì vậy, việc sử dụng công cụ sinh tự động này giúp giải quyết vấn đề một cách đơn giản, nhanh chóng. Chúng ta không cần quan tâm đến việc truy cập dữ liệu như thế nào, cách xử lý các biệt lệ…
2.3.2. Ưu nhược điểm của công cụ Mygeneration
a. Ưu điểm
Công cụ hoàn toàn miễn phí Dễ sử dụng, chính xác
Có thƣ viện mẫu Template đa dạng
b. Nhược điểm
Do sinh tự động nên sẽ có khá nhiều đoạn mã chƣơng trình đƣợc sinh ra mà không thực sự cần, dẫn đến dƣ thừa. Có thể ảnh hƣởng đến bộ nhớ, tốc độ chƣơng trình. Tuy nhiên đó không thực sự là vấn đề vì ngày nay vấn đề bộ nhớ cũng nhƣ tốc độ bộ xử lý là đủ lớn.
2.3.3. Hướng dẫn sử dụng công cụ Mygeneration
2.3.3.1. Kết nối cơ sở dữ liệu
Hình 2.4 Màn hình thiết lập kết nối cơ sở dữ liệu. (1): tạo kết nối với cơ sở dữ liệu, (2): hiển thị nội dung để kết nối với cơ sở dữ liệu, (3): kiểm tra kết nối đã thành
Sau khi kết nối thành công với cơ sở dữ liệu, lƣợc đồ cơ sở dữ liệu sẽ đƣợc hiển thị trong màn hình MyMeta.
Hình 2.5 Màn hình MyMeta
2.3.3.2. Sinh mã các lớp truy cập cơ sở dữ liệu
Tạo mã để cập nhật dữ liệu một bảng trong hệ cơ sở dữ liệu Chọn template tƣơng ứng
Chạy chƣơng trình, đặt output vào thƣ mục DAL trong project của bạn, chọn bảng muốn thực hiện, khi đó hệ thống sẽ tự động sinh ra các lớp trừu tƣợng tƣơng ứng mỗi bảng.
Tạo các views
Chọn template tƣơng ứng (ví dụ: Doodads Business View)
Chạy template, đặt output vào thƣ mục BLL trong project của bạn, chọn views mà bạn muốn, khi đó các lớp tƣơng ứng sẽ đƣợc tự động sinh ra
2.3.3.3. Các lệnh cơ bản gọi hàm chức năng của các lớp đã sinh
Khởi tạo một đối tượng bảng: Employees emps = new Employees(); Lấy tất cả các rows: emps.LoadAll();
Lấy tất cả các rows theo khóa chính: emps.LoadByPrimaryKey(empID); Insert một bản ghi:
Emps.AddNew();
Emps.LastName= "Smith";
emps.HireDate = DateTime.Now; emps.Save();
empID = emps.EmployeeID; //emps returns new key value Xóa bản ghi
emps.Save(); Cập nhật bản ghi
emps.LastName = "Jones"; emps.Save();
Get number of rows TOC emps.RowCount;
Duyệt các bản ghi theo vòng lặp
if(emps.RowCount> 0) {
emps.Rewind(); //move to first record do
{
//do something with the current row } while(emps.MoveNext());
}
Sắp xếp dữ liệu theo một trường dữ liệu
emps.Sort= Employees.ColumnNames.LastName + " DESC"; Lọc dữ liệu
emps.Filter= Employees.ColumnNames.LastName + " LIKE A%"; Định nghĩa kết nối cơ sở dữ liệu:
emps.ConnectionString=
"User=me;Password=pw;Database=Employees;DataSource=MyServer" Lấy dữ liệu các bản ghi
emps.Where.LastName.Value= "%A%";
emps.Where.LastName.Operator= WhereParameter.Operand.Like; //Note: Conjuction not Conjunction
emps.Where.HireDate.Conjuction= WhereParameter.Conj.Or;
emps.Where.HireDate.BetweenBeginValue= "2001-01-01 00:00:00.0"; emps.Where.HireDate.BetweenEndValue= "2001-12-31 23:59:59.9"; emps.Where.HireDate.Operator= WhereParameter.Operand.Between; emps.Query.Load();
Giới hạn trường dữ liệu trong bảng
emps.Query.AddResultColumn(Employees.ColumnNames.EmployeeID); emps.Query.AddResultColumn(Employees.ColumnNames.LastName);
emps.Query.Load(); Order By emps.Query.AddOrderBy(Employees.ColumnNames.HireDate, WhereParameter.Dir.DESC); Select Distinct emps.Query.Distinct= true; Select Top N emps.Query.Top= 10;
Dấu mở ngoặc đóng ngoặc (Parentheses)
emps.Query.OpenParenthesis(); emps.Query.CloseParenthesis(); Trả dữ liệu cho reader
SqlDataReader reader = emps.Query.ReturnReader() as SqlDataReader;