You are on page 1of 15

http://hocasp.

net/dbset-class/

DbSet và DbContext

Trước khi nói về DBSet thì mình xin nói lại về DBContext trước. Về định nghĩa thì mình đã nói trong bài viết DbContext. Ở đây
mình xin nhận xét riêng theo cái nhìn của mình về DbContext và DBSet cho dễ hiểu như sau:

DbContext tương ứng với cơ sở dữ liệu (một tập hợp gồm nhiều table và views trong cơ sở dữ liệu, có thể nói DbContext tương
ứng với database) còn DbSet tương ứng với một table hoặc view trong cơ sở dữ liệu.
Ta dùng DbContext để có truy cập vào các bảng và view của cơ sở dữ liệu (mỗi bảng được đại diện bởi DbSet) và ta dùng DbSet
để có được quyền truy cập, tạo, cập nhật, xóa và sửa đổi dữ liệu của bảng.

https://msdn.microsoft.com/en-us/library/system.data.entity.dbset(v=vs.103).aspx

DbContext là lớp chính chịu trách nhiệm cho việc tương tác với dữ liệu như là đối tượng. DbContext chịu trách nhiệm cho các
hoạt động sau:

 EntitySet: DbContext chứa tập thực thể (DbSet<TEntity>) cho tất cả thực thể nối với những bảng của CSDL.

 Querying: DbContext chuyển đổi những truy vấn LINQ-to-Entities thành truy vấn SQL và gửi nó tới CSDL.

 Change Tracking: Nó giữ việc theo dõi những thay đổi xảy ra trong những thực thể sau khi nó đã truy vấn từ
CSDL.

 Persisting Data: Nó cũng thực hiện các thao tác Insert, Update và Delete tới CSDL dựa trên những gì mà thực thể
thể hiện.

 Caching: DbContext mặc định thực hiện caching mức đầu tiên. Nó lưu những thực thể đã được nhận suốt vòng
đời của một lớp context.

 Manage Relationship: DbContext cũng quản lý những quan hệ sử dụng CSDL, MSL và SSDL trong phương pháp
tiếp cận DB-First hoặc Model-First hoặc sử dụng fluent API trong phương pháp tiếp cận Code-First.

 Object Materialization: DbContext chuyển đổi bảng dữ liệu thô vào những đối tượng thực thể.
Cài đặt DbContext:

Bạn có thể sử dụng DbContext bằng cách cài đặt lớp context và sử dụng cho thao tác CRUD như bên dưới.

using (var ctx = new SchoolDBEntities()) { //Can perform CRUD operation using ctx here.. }

Getting ObjectContext từ DbContext:

DBContext API là dễ sử dụng hơn ObjectContext API cho tất cả các tác vụ thông thường. Tuy nhiên bạn có thể lấy tham
chiếu của ObjectContext từ DBContext để sử dụng những chức năng của ObjectContext. Điều này có thể thực hiện bằng
cách sử dụng IObjectContextAdpter như bên dưới:
using (var ctx = new SchoolDBEntities()) { var objectContext =
(ctx asSystem.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext; //use objectContext here.. }

EDM cũng khởi tạo các lớp thực thể. Học về những kiểu khác nhau của thực thể trong phần tiếp theo.

Nguồn: http://www.entityframeworktutorial.net/ https://support.microsoft.com/vi-vn/help/2695605


Add-Migration <name>
Data Access Application Block

Nó được thiết kế để đơn giản hóa nhiệm vụ gọi các thủ tục lưu sẵn, cung cấp hỗ trợ đầy đủ cho việc sử dụng các câu
lệnh SQL được tham số hóa. Ví dụ về cách dễ dàng sử dụng khối, khi bạn muốn điền vào một DataSet, bạn chỉ cần tạo
một cá thể của lớp Database thích hợp, sử dụng nó để lấy một cá thể lệnh thích hợp (như DbCommand), và chuyển nó
tới ExecuteDataSet phương thức của lớp Database. Bạn không cần phải tạo một DataAdapter hoặc gọi phương thức Fill.
Phương thức ExecuteDataSet quản lý kết nối và thực hiện tất cả các nhiệm vụ cần thiết để điền DataSet của bạn. Tương
tự, lớp Database cho phép bạn có được một DataReader, thực hiện các lệnh trực tiếp và cập nhật cơ sở dữ liệu từ một
DataSet. Khối này cũng hỗ trợ các giao dịch để giúp bạn quản lý nhiều hoạt động có thể được khôi phục nếu xảy ra lỗi.

Nó sử dụng ánh xạ để liên kết các tham số và dữ liệu quan hệ với các thuộc tính của các đối tượng, but does not
implement an O/RM modeling solution.

ActiveX Data Objects


Phụ thuộc nhiều vào công ty mà bạn muốn vào nhưng cơ bản theo như mình biết trên
trang https://codefights.com/13 thì nó gồm có:

 Data Structures: Arrays, linked Lists, hash Tables, trees: Basic, heaps, stacks, queues
 Các thuật toán Sorting & Searching
 Dynamic Programming
 Strings, bits, kiến thức về toán học: hình học, số học,...

Ngoài ra còn có trang này http://www.geeksforgeeks.org/company-preparation/9 các dạng bài tập được hỏi
ở các công ty lớn.
Các câu hỏi interview http://www.geeksforgeeks.org/company-interview-corner/8

Trang https://codefights.com/interview-practice7 có các bài hướng dẫn cho các bạn chuẩn bị phỏng vấn.

Nếu có nhiều thời gian hơn thì có thể đọc thêm cuốn cracking the coding interview nhưng trong cuốn
này có những câu hỏi không thuộc về C. Vì vậy mình nghĩ bạn nên xem trên 2 trang kia.
Ô mình nhầm là bạn chỉ xin thực tập thôi có thể dễ hơn nhưng tham khảo thêm cũng tốt

https://machinelearningcoban.com/
Ai vẽ cái hình mà khó hiểu quá
Theo như hình thì các bước như thế này (giả sử ai-đó hoặc bạn đã tạo remote repository trước, ví dụ tạo
trên Github, Gitlab, Bitbucket..., sau đó bạn clone về):
1. Clone từ remote repository về. Working Copy (Working Tree hay Working Directory) là chỉ thư mục git
hiện tại bạn đang làm việc. Local Repository có thể coi là 1 "database" do git tạo ra để quản lý file, lịch sử
file, commit, branch... (database này được lưu trong thư mục con .git)
VD:
git clone github.com/abc/repo
cd repo
==> thư mục repo chính là Working Copy. Trong thư mục repo này sẽ có 1 thư mục con là .git, nó nằm
trên máy của bạn nên gọi là Local Repository
2. Khi bạn thay đổi file nào đó thì bạn đang làm việc trên Working Copy, những file thay đổi sẽ được liệt kê
khi chạy lệnh git status (nếu chạy trên terminal Linux thì nó là các file được tô chữ màu đỏ)
3. Khi muốn áp dụng những thay đổi ở bước 2, thì đầu tiên chạy lệnh git add file, file này sẽ được cho
vào 1 vùng gọi là Staging Area (git status => các file chữ màu xanh)
4. Sau khi file đã ở trong Staging Area, chạy lệnh git commit -m ... thì những thay đổi sẽ được ghi vào
Local Repository và lưu lịch sử git log.
5. Khi có commit thay đổi ở Local Repository thì chạy lệnh git push sẽ đưa các thay đổi này lên remote
repository. Lưu ý: bạn chỉ có thể git push nếu bạn có quyền write vào remote repository.
6. git fetch là download code mới nhất từ remote repository về và git sẽ lưu nó và 1 vùng gọi
là FETCH_HEAD, nhưng nó không ảnh hưởng gì đến Working Copy, muốn áp dụng vào local repository và
working copy thì sẽ chạy lệnh git merge. git pull = git fetch + git merge

Về cơ bản là thế, nhưng cái flow này chỉ dùng cho team nhỏ 1, 2 người, mọi người đều có quyền ghi vào
remote repository, không chia branch. Trong thực tế làm việc tùy theo từng team sẽ quy định flow làm
việc, ví dụ1 (chưa cần đọc cũng được, học về branch đã mới hiểu được).

Tài liệu để pro git:


- Tutorial dễ hiểu nhất: https://backlog.com/git-tutorial/vn/6
- Tutorial ngắn gọn: http://rogerdudler.github.io/git-guide/2
- Tài liệu đầy đủ và chính thống: https://git-scm.com/3
- Github: https://try.github.io/
- Bitbucket: https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud1
Với dấu (-) Google ngầm hiểu rằng nó đại diện cho dấu cách và nó sẽ hiểu tấm hình của bạn hơn và
do đó sắp xếp nó ở chuyên mục nó biết

You might also like