Entity Framework là một khuôn khổ đối tượng Object Bảng đồ quan hệ Relational Mapping (ORM) cho phép các nhà phát triển dể dàng làm việc với dữ liệu quan hệ như là các đối tượng domainspecific, loại bỏ đi sự khó khăn trong việc truy cập dữ liệu trước đây. Bằng cách sử dụng Entity Framework, truy vấn LINQ, thì việc lấy và thao tác dữ liệu như các đối tượng trở nên mạnh mẽ hơn. Entity Framework ORM cung cấp các dịch vụ như change tracking, idenity resolution, lazay loading, và truy vấn dữ liệu tập trung vào business logic của ứng dụng.
Trang 1BÁO CÁO THỰC TẬP CHUYÊN NGÀNH
Đề tài:
Tìm hiểu EF, ứng dụng xây dựng chương trình Quản lý khu trọ
Lời nói đầu
Một trong những yêu cầu cấp bách hiện nay là đưa CNTT vàocông tác quản lý, nhằm làm giảm bớt sức lao động của con người,tiết kiệm thời gian, tăng độ chính xác, thu hẹp không gian lưu trữ,tránh thất thoát và đảm bảo tính an toàn của dữ liệu
Qua quá trình học tập tại nha trang em nhận thấy việc ứngdụng công nghệ thông tin đang ngày càng được thể hiện rõ nét từviệc sử dụng giấy tờ sổ sách trong công việc quản lý thì nay việc sửdụng các phần mềm ngày một rộng rãi, đặc biệt các lĩnh vực nhưquản lý nhà hàng, khách sạn, siêu thị Bên cạnh đó vẫn còn một sốlĩnh vực chưa được áp dụng CNTT như quản lý khu trọ, quầy tạphóa,…Việc quản lý hầu như làm trên giấy tờ, sổ sách, các công việcliên quan đến tính toán đều được thực hiện bằng tay, làm mất rấtnhiều thời gian của người quản lý Khu trọ XXX cũng đang gặp phảinhững khó khăn như vậy và giải pháp được lựa chọn ở đây là ứngdụng CNTT vào việc quản lý cho khu trọ này nhằm giảm bớt các khókhăn trong công việc mà người quản lý gặp phải
Để tránh việc mất mát, hư hỏng giấy tờ sổ sách, tất cả cácthông tin được lưu trữ trong cơ sở dữ liệu và được quản lí trên máytính Việc đó làm cho độ an toàn của dữ liệu tăng lên, tốc độ tínhtoán nhanh hơn Để truy vấn tới dữ liệu cách thông thường là sửdụng câu lệnh SQL, cách này đòi hỏi người phát triển phải bỏ ranhiều thời gian cho việc lập trình Ngày nay để tiết kiệm thời gian
và công sức người ta dùng các công cụ ORM, được hiểu như là kỹthuật ánh xạ từ mô hình đối tượng với các table trong cơ sở dữ liệuquan hệ Trong đó các đối tượng ánh xạ với các bảng và quan hệcủa table trong database sẽ được ánh xạ với sự ràng buộc liên quantrong đối tượng Với ORM, bạn có thể thao tác truy cập, xử lý
Trang 2database một cách dễ dàng và nhanh chóng Với những ưu điểmcủa công cụ ORM em chọn Entity Framework để phát triển ứng dụngquản lý khu trọ của mình.
Chương 1: Tổng quan 1.1 Giới thiệu
Khu trọ xxx do ông xxx làm chủ chuyên cho thuê chỗ ở với giá
cả cạnh tranh, phục vụ sinh viên và những người đi làm xa quê cónhu cầu Khu trọ gồm bốn tầng, tầng một có bốn phòng các tầngcòn lại có năm phòng, mỗi phòng được phép ở tối đa 4 người
Hiện nay khu trọ đang áp dụng việc quản lý khách trọ trêngiấy tờ sổ sách, tất cả mọi việc đều được làm thủ công Vì vậy, việc
hư hỏng, mất mát giấy tờ là không tránh khỏi, cứ mỗi lần tính tiềnhóa đơn cho cả khu trọ ông phải bỏ ra rất nhiều thời gian tính toánbằng tay và đôi khi việc tính toán tiền hóa đơn bị sai sót làm mất đi
uy tín của khu trọ Mỗi khi muốn tìm thông tin về khách trọ haythông tin về hóa đơn ông phải bỏ ra không ít thời gian để tìm kiếmtrong sổ sách, việc này rất phiền phức và khó khăn khi ông khôngmang kính
1.2 Hướng giải quyết
Hiểu được sự vất vả của công việc mà ông phải trải qua, emnhận thấy giải pháp tốt nhất để giải quyết các khó khăn này là ứngdụng CNTT vào việc quản lý, cụ thể là xây dựng phần mềm quản lýkhu trọ nhằm đáp ứng những yêu công việc mà ông phải làm trongquá trình quản lý, như lưu trữ thông tin trang thiết bị, thông tinkhách trọ, thông tin phòng trọ, thông tin phiếu đăng ký Tính toán
và tạo hóa đơn tự động, tìm kiếm thông tin về khách trọ, thông tinhóa đơn, thông tin phòng trống chính xác và nhanh chóng Cho
Trang 3phép in danh sách hóa đơn, danh sách khách trọ, danh sách phiếuđăng ký trong tháng và lịch sử điện nước theo phòng Phân quyềnchức năng hệ thống tránh các truy cập không được phép.
Để xây dựng các chức năng đáp ứng các yêu cầu công việctrong khoảng thời gian giới hạn là tám tuần, công cụ EntityFramework được áp dụng và hướng tiếp cận mà em lựa chọn làDatabase First, cách này dể dàng, nhanh chóng vì CSDL đã được emthiết kế trong thời gian phân tích thiết kế hệ thống của khu trọ
Chương 2: Cơ sở lý thuyết 2.1 Phân tích thiết kế
2.1.1 phương pháp Merise
- Ý tưởng cơ bản của phương pháp MERISE
Mặt thứ nhất: Quan tâm đến chu kỳ sống của hệ thống Một
hệ thống thông tin luôn trải qua bốn giai đoạn: Thai nghén - Sinh sản - Quản trị - Chết Thời gian sống này đối với hệ thống tổ chức lớn có thể kéo dài từ 10 - 15 năm
Mặt thứ hai: Đề cập đến chu kỳ nhận thức về hệ thông tin (cònđược gọi là chu kỳ trừu tượng) Sự hiểu biết về hệ thống thông tin trải qua ba mức: Mức quan niệm, mức logic (tổ chức) và cuối cùng
là mức vật lý
Mặt thứ ba: Mặt này có liên quan đến chu kỳ phát triển của hệthống Một hệ thống thông tin luôn trải qua 3 giai đoạn: Phân tích, thiết kế và thực hiện
-Nội dung của phương pháp MERISE
Trang 4Mức quan niệm: Là mức cảm nhận đầu tiên để xác định hệ thống thông tin, ở mức này cần trả lời câu hỏi: Hệ thống thông tin cần những yếu tố gì? Chức năng ra sao? Gồm những dữ liệu nào và qui tắc quản lý như thế nào? Và tại sao có những yếu tố này? Tại sao có những chức năng này? – Trả lời câu hỏi: What? Why?
Mức tổ chức hay logic: Là mức tổng hợp các yếu tố đã nhận diện ở mức quan niệm Trong mức này, cần phải trả lời được các câuhỏi: Ai làm? Làm ở đâu và làm khi nào? Who? Where? When?
Mức vật lý: Là mức chi tiết Về dữ liệu cần có các quan hệ cụ thể, có một ngôn ngữ lập trình cụ thể Về xử lý cần có đầy đủ các đặc tả cho từng thủ tục chương trình, có sự tham khảo ngôn ngữ trong chương trình này Mức này trả lời câu hỏi cuối cùng: Các công việc làm như thế nào? How?
2.1.2 Mô hình hình 3 lớp
Khi làm việc với các ứng dụng, với những dự án nhỏ thì việctạo một ứng dụng theo ý tưởng rất dễ dàng, tuy nhiên khi làm vớinhững dự án lớn hơn, cần nhiều người cùng làm hơn thì việc lậptrình trở nên phức tạp hơn, vậy nên để dễ dàng hơn trong việc quản
lý các thành phần của hệ thống cũng như ảnh hưởng tới các thànhphần khác khi ta thay đổi một thành phần, chúng ta thường nhómcác thành phần có cùng chức năng lại với nhau Chính vì thế các môhình lập trình được sinh ra, một trong những mô hình lập trình đó là
mô hình 3 lớp (3 - Layer) Được cấu thành từ Presentation, Business Logic, và Data Access, Các lớp này sẽ giao tiếp với nhau thông qua
các dịch vụ (services) mà mỗi lớp cung cấp để tạo nên ứng dụng,lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cầnbiết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi
Trang 5- Presentation Layer
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữliệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giaodiện người sử dụng Lớp này sẽ sử dụng các dịch vụ do lớp BusinessLogic cung cấp Trong .NET thì chúng ta có thể dùng WindowsForms, ASP.NET hay Mobile Forms để hiện thực lớp này
- Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng cácdịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cholớp Presentation Lớp này cũng có thể sử dụng các dịch vụ của cácnhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến nhưVeriSign, Paypal…)
- Data Access
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất
dữ liệu của ứng dụng Thường lớp này sẽ sử dụng các dịch vụ củacác hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,… để thực hiệnnhiệm vụ của mình
2.2 Các công cụ và ngôn ngữ lập trình
2.2.1 Bộ công cụ SQL Server 2012
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ(relational database management system - RDBMS) do Microsoft
Trang 6phát triển SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ máymạng tính hoạt động theo mô hình khách chủ cho phép đồng thờicùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việctruy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng.SQL có nhiều phiên bản, trong khuôn khổ bài thực tập này em chọnphiên bản SQL Server 2012.
SQL Server 2012 cho phép các tổ chức có thể chạy hầu hếtcác ứng dụng phức tạp của họ trên một nền tảng an toàn, tin cậy và
có khả năng mở rộng, bên cạnh đó còn giảm được sự phức tạp trongviệc quản lý cơ sở hạ tầng dữ liệu SQL Server 2012 cung cấp mộtnền tảng tin cậy và an toàn bằng cách bảo đảm những thông tin cógiá trị trong các ứng dụng đang tồn tại và nâng cao khả năng sẵn
có của dữ liệu SQL Server 2012 giới thiệu một cơ chế quản lý cáchtân dựa trên chính sách, cơ chế này cho phép các chính sách có thểđược định nghĩa quản trị tự động cho các thực thể máy chủ trênmột hoặc nhiều máy chủ Thêm vào đó, SQL Server 2012 cho phépthi hành truy vấn dự báo với một nền tảng tối ưu
Nền tảng lập trình dữ liệu toàn diện của Microsoft cho phépxây dựng các ứng dụng dữ liệu hướng đến PC, thiết bị di động, máychủ web và máy chủ mạng công ty SQL Server 2012 hỗ trợ xâydựng các ứng dụng dùng nhiều loại công nghệ kết nối có sẵn nhưODBC, ADO/OLEDB và ADO.NET Đặc biệt, SQL Server 2012 cùng với.NET Framework và Visual Studio Team Systems cho phép xây dựngnhững ứng dụng cơ sở dữ liệu kế tiếp mạnh mẽ
Hỗ trợ mới cho các hệ thống không kết nối thường xuyên chophép xây dựng các ứng dụng mà người dùng có thể đem theo dữliệu trên thiết bị và sau đó đồng bộ dữ liệu với máy chủ trung tâm
SQL Server 2012 cung cấp nền tảng kho dữ liệu toàn diện và
có thể mở rộng, cho phép đưa dữ liệu vào kho dữ liệu nhanh hơn và
có thể nâng cấp để quản lý lượng dữ liệu và người dùng ngày càngtăng, đồng thời cung cấp thông tin phân tích đến tất cả mọi người
Trang 72.2.2 Bộ công cụ visual 2013
Visual Studio 2013 cho phép đội ngũ lập trình viên phát triển,phân phối và quản lý ứng dụng để khai thác các thiết bị và dịch vụtiên tiến hiện nay Visual Studio 2013 được bổ sung nhiều tính năng
và chức năng nhằm nâng cao chất lượng và rút ngắn thời gian pháttriển ứng dụng Với công cụ và nền tảng được cập nhật, lập trìnhviên có thể dễ dàng viết và chạy thử ứng dụng cho Windows 8.1
Visual Studio 2013 cung cấp một bộ công cụ mạnh để xâydựng phần mềm cho Windows, Web, các thiết bị di động vàMicrosoft Office Cung cấp môi trường xây dựng các ứng dụng hấpdẫn hiện đại nhằm đáp ứng nhu cầu đáp ứng nhu cầu luôn thay đổi,cần truy cập mọi nơi và cần dữ liệu đa dạng, phức hợp của kháchhàng Dù nền tảng phát triển là gì, Visual Studio vẫn nâng cao hiệuquả hoạt động của nhà phát triển bằng cách cung cấp công cụ để
họ viết mã nhanh hơn và đơn giản hoá những tác vụ liên quan đếnviệc phát triển phần mềm.Với Visual Studio 2013, nhà phát triển cóthể:
- Viết mã code nhanh hơn:
Visual Studio 2013 cung cấp nhiều tính năng nâng cao hiệu quảhoạt động, chế độ hoàn chỉnh tự động, chế độ tự điều chỉnh màu,chế độ tra cứu phương pháp, kiểm tra lỗi đánh máy và lỗi cú pháp,phân tích lại mã, quản lý các đoạn mã v.v LINQ (Language-Integrated Query), tập hợp các phần mở rộng cho ngôn ngữ C# vàVisual Basic để giúp nhà phát triển có một cách tiếp cận nhất quán
và nếu cần truy vấn & chuyển đổi các tập hợp đối tượng, dữ liệuADO.NET, XML, cơ sở dữ liệu SQL Server thì sẽ viết ít mã hơn
- Sử dụng công cụ tích hợp
Visual Studio 2013 cung cấp một bộ công cụ tích hợp nhưng khôngphải là để viết mã Hệ thống dự án Visual Studio sẽ giúp nhà pháttriển quản lý nhiều khía cạnh trong nỗ lực phát triển phần mềm,bao gồm cả việc cài đặt và triển khai phần mềm Trong một dự án,các tính năng như Web Forms Designer, Windows Forms Designer,Data Designer, Data Explorer, Server Explorer, công cụ tạo chương
Trang 8trình, công cụ tìm và khắc phục lỗi và cả một chương trình trợ giúptích hợp sẽ liên kết với nhau giúp nhà phát triển làm việc hiệu quảhơn.
2.2.3 Ngôn ngữ C#
C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phầncomponent, lập trình hướng đối tượng Những tính chất đó hiện diệntrong một ngôn ngữ lập trình hiện đại Và ngôn ngữ C# hội đủnhững điều kiện như vậy, hơn nữa nó được xây dựng trên nền tảngcủa hai ngôn ngữ mạnh nhất đó là C++ và Java
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++,nhưng nó được tạo từ nền tảng phát triển hơn Microsoft bắt đầu vớicông việc trong C và C++ và thêm vào những đặc tính mới để làmcho ngôn ngữ này dể sử dụng hơn Nhiều trong số những đặc tínhnày khá giống với những đặc tính có trong ngôn ngữ Java Khôngdừng ở lại đó, Microsoft đưa ra một số mục đích khi xây dựng ngônngữ này:
- C# là ngôn ngữ đơn giản: ngôn ngữ C# đơn giản vì nó dựatrên nền tảng C và C++ Nếu người dùng thân thiện với C vàC++ thậm chí là Java, người dùng sẽ thấy C# khá giống vềdiện mạo, cú pháp, biểu thức, toán tử và những chức năngkhác được lấy trực tiếp từ ngôn ngữ C và C++, nhưng nó đãđược cải tiến để làm cho ngôn ngữ đơn giản hơn
- C# là ngôn ngữ hiện đại: những đặc tính như là xử lý ngoại lệ,thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng và bảomật mã nguồn là những đặc tính được mong đợi trong mộtngôn ngữ hiện đại
- C# là ngôn ngữ hướng đối tượng: những đặc điểm chính củangôn ngữ hướng đối tượng (Object-oriented laguage) là sựđóng gói (encapsulation), sự kế thừa (inheritance) và đa hình(polymorphism)
- C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo: C# được sử dụngnhiều cho các dự án khác nhau như là tạo ra ứng dụng xử lý
Trang 9văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trìnhbiên dịch cho ngôn ngữ khác.
- C# là ngôn ngữ ít từ khóa: C# là ngôn ngữ sử dụng giới hạnnhững từ khóa, phần lớn các từ khóa được sử dụng để mô tảthông tin
- C# là ngôn ngữ hướng module: mã nguồn C# có thể được viếttrong những phần được gọi là những lớp, những lớp này chứacác phương thức thành viên của nó
2.3 Kiến trúc Entity Framework
2.3.1 Giới thiệu
Entity Framework là một bộ ánh xạ đối tượng – quan hệ chophép người lập trình NET làm việc với dữ liệu quan hệ qua các đốitượng (object) nó giúp lập trình viên không cần viết mã cho (hầuhết) những gì liên quan đến truy cập dữ liệu
Entity Framework có các đặc tính nhắm đến các ứng dụngdoanh nghiệp (“Enterprise Scenarios”) Trong một doanh nghiệp,một CSDL thông thường được kiểm soát bởi DBA (người quản trịCSDL), cấu trúc của CSDL thông thường được tối ưu cho việc lưu trữ(hiệu năng, tính toàn vẹn, phân hoạch) hơn là cho một mô hình ứngdụng tốt, và có thể thay đổi qua thời gian khi dữ liệu và việc sửdụng phát triển lên Với ý tưởng này, Entity Framework được thiết
kế xung quanh việc xây dựng một mô hình dữ liệu hướng tới ứngdụng, ít phụ thuộc, thậm chí có thể khác một chút so với cấu trúcCSDL thực sự Ví dụ, chúng ta có thể ánh xạ một lớp đơn (hay “thựcthể”) và nhiều table/view, hay ánh xạ nhiều lớp vào cùng mộttable/view Chúng ta có thể ánh xạ vào một cấu trúc phân cấp vàomột table/view đơn (như trong LINQ to SQL) hay vào nhiềutable/view (ví dụ: person, customer, employee có thể nằm trong cácbảng riêng biệt vì customer và employee chỉ chứa thêm một sốthông tin không có trong person, hoặc lặp lại các cột từ bảngperson) Chúng ta có thể nhóm các thuộc tính vào các kiểu phứchợp (“complex”, hay “composite”), ví dụ một kiểu Customer có thể
có thuộc tính “Address” với kiểu Address có các thuộc tính Street,
Trang 10City, Region, Country và Postal) Entity Framework cũng cho phépchúng ta biểu diễn quan hệ nhiều-nhiều một cách trực tiếp, màkhông cần tới bảng kết nối như một thực thể trong mô hình dữ liệu,
và có một đặc tính mới được gọi là “Defining Query”, có thể đượcdùng cho việc biểu diễn một bảng ảo với dữ liệu lấy từ một câu truyvấn (ngoài trừ việc cập nhật phải thông qua một stored procedure).Khả năng ánh xạ mềm dẻo này, bao gồm tùy chọn dùng các storedprocedure để xử lý các thay đổi, có thể được thực hiện chỉ bằngcách khai báo, hoặc chỉnh sửa lại khi yêu cầu thay đổi, mà khôngcần phải biên dịch lại ứng dụng
2.3.2 Các thành phần 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,…)
Trang 11Có 3 cách sử dụng Entity Framework: Code First, Models First,Database First.
- Database first: là phương pháp chỉ nên dùng khi ta đã có sẵnCSDL (không phải tạo), EF Wizard sẽ tạo Model và Code cho
ta Đây là cách thông thường và được hỗ trợ từ phiên bản EF 1trong Visual Studio 2008 EF sẽ tự động tạo ra data model vàcác class (object layer) cho chúng ta từ database có sẵn thôngqua công cụ Entity Data Model Wizard Chúng ta có thể thayđổi data model và cập nhật lại vào database Đây là cách tiếpcận phổ biến vì cách thực hiện đơn giản, nhanh chóng
- Models 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ạocode cho ta, sau đó nhờ EF Wizard tạo CSDL Chúng ta có thểtạo một data model rỗng bằng công cụ Entity Data ModelDesigner, khi đó object layer cũng tự động được sinh ra Saukhi đã hoàn thành việc thiết kế, chúng ta có thể sử dụng chứcnăng Generate Database from Model để tạo ra các mã DDL(data definition language) dựa trên mã SSDL (Store SchemaDefinition Language) Các mã DDL này sẽ được thực thi và lưuthành tập tin sql
- Code first: nên dùng khi đã có mô hình CSDL, ta sẽ chỉ viếtcode từ đó tạo Database Hướng tiếp cận này bỏ qua phầnModel (.edmx), chúng ta có thể thiết kế các class tương ứngvới các table của database mà chúng ta cần làm việc hoặcmuốn tạo ra Với hướng tiếp cận này, chúng ta sẽ sử dụngclass DbContext thay vì ObjectContext để thao tác vớidatabase Việc sử dụng Code First đòi hỏi chúng ta phải thựchiện các công việc một cách thủ công nhưng bù lại nó linhhoạt và được sử dụng rất phổ biến
2.3.3 Đặc điểm của Entity Framework
- Sử dụng DbContext
Trang 12DbContext là đối tượng UnitOfWork, chính là mẫu thiết kế vềtruy xuất CSDL khá thông dụng Khi áp dụng mẫu này, chúng ta sẽ
có một đối tượng theo dõi các thay đổi của dữ liệu, và đối tượng đó
sẽ quản lý việt cập nhật những thay đổi đến CSDL Điều này cũng
có nghĩa là DbContext sẽ giữ bản sao chép cục bộ của dữ liệu (ởCSDL) với những thay đổi chưa được cập nhật
Đối tượng DBContext phải có thời gian sống ngắn, mẫu Unit OfWork khuyên chúng ta nên có đối tượng UnitOfWork cho mỗi giaodịch Bởi vì đối tượng này giữ bản sao của dữ liệu và những thay đổicủa nó, cho nên nó phải nhanh chóng cập nhật CSDL để phòngtrường hợp có truy vấn khác đến dữ liệu này
Chúng ta hầu như không thể xử lý được mọi tình huống truyxuất/cập nhật đồng bộ Nhưng việc giảm thời gian sống củaDbContext càng ngắn càng tốt, vì chúng ta đang giảm nguy cơ xảy
ra các mâu thuẫn khi xử lý đồng bộ như đã nêu trên
Với lập trình web, ta nên giữ đối tượng DbContext sống trongvòng đời một web request đến ứng dụng Nếu ta lấy lên quá nhiều
dữ liệu, DbContext sẽ làm cho trang web chạy chậm lại, vì vậychúng ta nên kết thúc vòng đời của DbContext càng sớm càng tốt,
và vòng đời của DbContext được gắn với vòng đời của mỗi request
là điều nên làm
Việc tạo mới và hủy một đối tượng không làm chúng ta quátốn kém CPU hay bộ nhớ, và cần nhớ rằng, việc hủy các đối tượngcàng sớm càng tốt là một trong những kinh nghiệm tốt mà chúng tanên tuân theo và đối tượng DbContext của EF cũng không phải làngoại lệ
-Sử dụng Entity SQL
Entity SQL là một ngôn ngữ truy vấn lưu trữ độc lập mà làtương tự như SQL Entity SQL cho phép bạn truy vấn thực thể dữliệu, hoặc là đối tượng hoặc dưới dạng bảng Chúng ta nên xem xét
sử dụng Entity SQL trong các trường hợp sau đây:
Khi một truy vấn được tự động xây dựng tại thời điểm runtime:trong trường hợp này, nên xem xét sử dụng các phương pháp xây
Trang 13dựng truy vấn của ObjectQuery thay vì xây dựng một chuỗi truy vấnSQL Entity tại thời điểm runtime.
Khi muốn định nghĩa một truy vấn như là một phần của địnhnghĩa mô hình: chỉ Entity SQL được hỗ trợ trong một mô hình dữliệu
Khi sử dụng EntityClient trả về thực thể dữ liệu chỉ đọc nhưrowsets sử dụng một EntityDataReader
Nếu là một chuyên gia về ngôn ngữ truy vấn SQL, Entity SQL
có vẻ tự nhiên nhất để sử dụng
-Sử dụng ObjectContext
ObjectContext là lớp chính trong Entity Framework tương tácvới cơ sở dữ liệu ObjectContext duy trì kết nối với cơ sở dữ liệu vàcũng quản lý tất cả các theo tác đọc và ghi
Entity Data Model có thể được truy vấn sử dụng LINQ toEntities hoặc Entity Sql hoặc bằng các phương pháp LINQ Cho dùcác phương pháp truy vấn nào, kết quả luôn được trả về như là cácđối tượng Tất cả các đối tượng được trả về bởi một truy vấn đượcgắn vào một ObjectContext
Sử dụng ObjectStateManager, ObjectContext theo dõi các thayđổi cho các đối tượng và áp dụng các thay đổi để lưu trữ dữ liệu.Các ObjectStateManager giữ tài liệu tham khảo của tất cả các đốitượng Khi một giao dịch xảy ra, các ObjectContext theo dõi thứ tựcủa các hoạt động và tạo ra SQL để thực hiện các hoạt động có hiệuquả
Khi chúng ta truy vấn một đối tượng với các ObjectContext,thông tin về các đối tượng được lưu trữ trong bộ quản lý trạng tháiObjectContext Và, khi chúng ta gọi SaveChanges () phương phápcủa ObjectContext, ObjectContext tìm kiếm tất cả các đối tượngtrong ObjectStateManager và làm những hành động thích hợp trênmỗi đối tượng
- Có thể làm việc với các CSDL: Oracle, DB2, MySQL, SQL Server
Trang 14- Tạo ra file edmx, csdl, msl, ssdl hoặc các file class cs thôngthường
- Hỗ trợ các kiểu phức tạp
- Có thể tạo CSDL từ Model/Code đã thiết kế
- Có thể ánh xạ 1-1, 1-nhiều, nhiều-1, nhiều-nhiều giữa đối tượngentity với table/view
Chương 3: Nội dung và kết quả thực tập:
3.1 Phân tích thiết kế
3.1.1 Quy trình hoạt động của hệ thống.
Khi có khách trọ đến thuê phòng ở, chủ trọ sẽ kiểm tra xemcòn phòng trống hay không Nếu tất cả các phòng đã đầy thì chủtrọ thông báo cho khách, ngược lại thì cho khách biết thông tin vềphòng như tên phòng, loại phòng, giá phòng, trạng thái của phòng(đặt cọc, cần thêm người, sửa chửa), số người đang ở (nhỏ hơn hoặcbằng bốn), cùng danh sách các thiết bị có trong phòng, giá cả cácdịch vụ như điện, nước Nếu khách đồng ý thuê phòng thì chủ trọyêu cầu đóng tiền đặt cọc và ghi lại thông tin của khách như tên,giới tính, ngày sinh, quê quán, số điện thoại cùng các thông tin cánhân liên quan để lập phiếu đăng ký thuê phòng, khách trọ vừađăng ký sẽ có trạng thái là đang ở để chỉ khách trọ đang ở trongkhu trọ Khi khách trọ chuyển vào ở thì tiền đặt cọc sẽ được trả lạicho khách, chủ trọ yêu cầu khách ghi bản khai nhân khẩu, tạm trútạm vắng để trình báo cơ quan công an Còn nếu sau 1 tuần kể từngày đăng ký khách không vào ở thì tiền đặt cọc sẽ thuộc về chủtrọ, thông tin phiếu đăng ký của khách đó sẽ bị hủy, trạng thái củakhách được sửa thành không ở để chỉ khách không ở trong khu trọ
Cuối tháng chủ trọ đi đến từng phòng ghi lại số công tơ điện,
số công tơ nước và kiểm tra các thiết bị rồi ghi lại trạng thái (sửdụng, sửa chửa, hỏng, làm mất) Đầu tháng chủ trọ sửa chửa và cậpnhật lại trạng thái cũng như chi phí và ngày sửa thiết bị, cập nhật
Trang 15giá dịch vụ, tính tiền điện, nước và các chi phí liên quan của mỗiphòng sau đó lập hóa đơn thu tiền từng phòng Hóa đơn vừa đượctạo có trạng thái chưa thanh toán, khi hóa đơn được thanh toán đầy
đủ thì trạng thái của hóa đơn là đã thanh toán Nếu phòng nào đóchỉ đóng tiền một phần vì có khách trọ nợ tiền hóa đơn thì trạngthái của hóa đơn là thanh toán một phần và thông tin tiền nợ củakhách được ghi lại Khi khách trả tiền nợ cho hóa đơn thì trạng tháicủa hóa đơn là đã thanh toán Lúc khách trọ không ở nửa muốn trảphòng thì phải thông báo cho chủ trọ và thanh toán hết các khoảntiền mà khách còn nợ, trạng thái của khách được đặt lại là không ở
để chỉ khách không còn ở
Chủ trọ có toàn quyền trên hệ thống, nếu sau này có thuênhân viên thì chủ trọ sẽ cho phép nhân viên một số quyền trên hệthống, những người dùng khác chỉ được tra cứu thông tin về phòngtrống, lịch sử sử dụng điện nước của phòng
- Đặc tả dữ liệu:
• Khách Trọ: Mỗi khách trọ của khu trọ được quản lý các thôngtin sau đây: Họ tên, giới tính, ngày sinh, số CMND, quê quán,nghề nghiệp, địa chỉ nơi làm việc, số điện thoại, tiền nợ, trạngthái, chú thích
• Phòng: Mỗi phòng được quản lý các thông tin sau đây: Tênphòng, loại phòng, giá phòng, trạng thái
• Dịch vụ: Một dịch vụ của khu trọ được quản lý các thông tinsau đây: Tên dịch vụ, giá dịch vụ, tính theo
• Thiết bị: Mỗi thiết bị được quản lý các thông tin say đây: Tênthiết bị, trạng thái, mô tả
• Phiếu đăng ký: Mỗi phiếu đăng ký thuê phòng quản lý cácthông tin sau đây: Người đăng ký, phòng, ngày đăng ký, chúthích
Trang 16• Hóa đơn: Mỗi hóa đơn đước tính toán từ: Tiền phòng, tiền tiềnđiện nước và các chi phí khác cùng các thông tin như ngàylập, trạng thái.
- Chức năng hệ thống
• Cập nhật thông tin các bảng: Dịch Vụ, Trạng Thái Phòng, Trang
Bị, Trạng Thái Trang Bị, Thiết Bị, Trạng Thái Hóa Đơn, Phòng,Loại Phòng, Điện, Nước, Khách Trọ, Phiếu Đăng Ký, NgườiDùng, Quyền
• Tính toán tiền điện nước
• Tìm kiếm các phòng còn trống và thông tin của phòng đó
• Tìm kiếm thông tin khách trọ
• Tìm kiếm hóa đơn
• Lập phiếu đăng ký thuê phòng
• Lập hóa đơn
• Lập danh sách hóa đơn của tất cả các phòng trong tháng
• Lập báo cáo quá trình sử dụng điện nước
• Lập báo cáo phiếu đăng ký trong tháng
• Báo cáo danh sách khách trọ
Trang 17- Công thức tính toán
Tiền điện = Số kw điện sử dụng * giá tiền điện
Tiền nước = Số m3 nước sử dụng * giá tiền nước
Tiền khác = Tiền sửa chửa thiết bị nếu có
Tổng tiền = Tiền phòng, Tiền điện + Tiền nước + Tiền khác
3.1.2 Các mô hình dữ liệu
- Mô hình quan niệm dữ liệu
Trang 18- Mô hình tổ chức dữ liệu
Quyền (Mã Quyền, Tên Quyền, Chức năng)
Trang 19Người Dùng (MaND, Tên, HoTen, GioiTinh, DienThoai, CMND,
QueQuan, Luong, Mật Khẩu, Mã Quyền)
Dịch vụ (Mã Dịch Vụ, Tên Dịch Vụ, Giá Dịch Vụ, Tính Theo)
Loại Phòng (Mã Loại Phòng, Tên Loại Phòng, Giá Phòng)
Trạng Thái Phòng (Mã Trạng Thái, Tên Trạng Thái)
Phòng (Mã Phòng, Tên Phòng, Mã Loại Phòng, Mã Trạng Thái)
Khách Trọ (Mã Khách Trọ, Họ Tên, Quê Quán, Ngày Sinh, Giới Tính,
Điện Thoại, CMND, Nghề Nghiệp, Địa Chỉ nơi Làm Việc, Tiền Nợ, Chú Thích)
Phiếu Đăng Ký (Số phiếu, Mã Khách Trọ, Mã Phòng, Ngày Đăng Ký,
Chú Thích)
Điện (Mã Phòng, Tháng, Số Cũ, Số Mới)
Nước (Mã Phòng, Tháng, Số Cũ, Số Mới)
Thiết Bị (Mã Thiết Bị, Tên Thiết Bị)
Trạng Thái Trang Bị (Mã Trạng Thái, Tên Trạng Thái)
Trang Bị (Mã Thiết Bị, Mã Phòng, Mã Trạng Thái, Mô Tả, Ngày Sửa
Gần Nhất, Chí Phí Sửa Chửa)
Trạng Thái Hóa Đơn (Mã Trạng Thái, Tên Trạng Thái)
Hóa Đơn (Mã Hóa Đơn, Mã Phòng, Ngày Lập, Tiền Phòng, Tiền Điện,
Tiền Nước, Tiền Khác, Mã Trạng Thái, Chú Thích )
- Mô hình vật lý dữ liệu
Quyền (Mã Quyền, Tên Quyền, Chức năng)
Tên Quyền nvarchar (10)
Dữ liệu ví dụ:
Trang 20Mã Quyền Tên Quyền Chức năng
1 Chủ trọ 11111 1101 101000 11 111
1011
2 Quản lý 11111 1111 111111 11 111
1111
Người Dùng (MaND, Tên, HoTen, GioiTinh, DienThoai, CMND,
QueQuan, Luong, Mật Khẩu, Mã Quyền)
Nam 01659078
698
183918253
1 quanl
y
VươngAnh Tú
Nam 01658735
099
183918254
Trang 21Quê Quán Lương Mật Khẩu Mã Quyền
0
abc123 2
Dịch vụ (Tên Dịch Vụ, Giá Dịch Vụ, Tính Theo)
Loại Phòng (Mã Loại Phòng, Tên Loại Phòng, Giá Phòng)
Mã Loại Phòng Tinyint
Tên Loại Phòng Nvarchar (10)
Giá Phòng Decimal (9,0)
Trang 22Trạng Thái Phòng (Mã Trạng Thái, Tên Trạng Thái)