DBCONTEXT LÀ GÌ

  -  

Nlỗi các bạn đã thấy trong phần 3 Tạo Entity Data Model, EDM khởi tạo ra lớp SchoolDBEntities được dẫn xuất tự lớp System.Data.Entity.DbContext như bên dưới. Lớp dẫn xuất trường đoản cú DbContext được Điện thoại tư vấn là lớp context vào Entity Framework.

Bạn đang xem: Dbcontext là gì

*

Trước EntityFramework 4.1, EDM thường xuyên khởi tạo nên lớp context được dẫn xuất từ lớp ObjectContext. Nó có một chút ít rắc rối khi thao tác làm việc với ObjectContext. DbContext tư tưởng tương tự ObjectContext. Nó là 1 trong trình bảo phủ quanh ObjectContext cùng bổ ích trong toàn bộ quy mô phát triển: Code First, Model First và Database First.

DbContext là một trong những phần đặc trưng của Entity Framework. Nó là một cầu nối giữa lớp domain hoặc thực thể cùng cơ sở dữ liệu của khách hàng.

*

DbContext là lớp thiết yếu Chịu đựng trách nát nhiệm cho bài toán hệ trọng cùng với tài liệu như thể đối tượng người tiêu dùng. DbContext chịu đựng trách nát nhiệm cho những vận động sau:

EntitySet: DbContext chứa tập thực thể (DbSet) mang đến toàn bộ thực thể nối với các bảng của CSDL.Querying: DbContext chuyển đổi rất nhiều truy vấn LINQ-to-Entities thành truy tìm vấn SQL với gửi nó tới CSDL.Change Tracking: Nó giữ việc theo dõi và quan sát rất nhiều đổi khác xẩy ra Một trong những thực thể sau khi nó đang tầm nã vấn trường đoản cú DataBase.Persisting Data: Nó cũng triển khai các thao tác Insert, Update và Delete cho tới CSDL dựa vào những gì cơ mà thực thể diễn tả.Caching: DbContext khoác định thực hiện caching nấc thứ nhất. Nó giữ phần đa thực thể vẫn được nhận xuyên suốt vòng đời của một tờ context.

Xem thêm: Tìm Hiểu Về Norton Ghost Là Gì, Ghost Win Là Gì, Ghost Win Là Gì

Manage Relationship: DbContext cũng thống trị gần như 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 vào phương pháp tiếp cận Code-First.Object Materialization: DbContext đổi khác bảng dữ liệu thô vào mọi đối tượng thực thể.

Sau đấy là một ví dụ của lớp SchoolDBEntities class (lớp class dẫn xuất DbContext) khởi chế tạo ra với EDM mang đến CSDL SchoolDB trong số những bài xích lý giải trước.

namespace EFTutorials using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.bộ vi xử lý Core.Objects; using System.Linq; public partial class SchoolDBEntities : DbContext public SchoolDBEntities() : base("name=SchoolDBEntities") protected override void OnModelCreating(DbModelBuilder modelBuilder) throw new UnintentionalCodeFirstException(); public virtual DbSetCourse> Courses get; set; public virtual DbSetStandard> Standards get; set; public virtual DbSetStudent> Students get; set; public virtual DbSetStudentAddress> StudentAddresses get; set; public virtual DbSetTeacher> Teachers get; set; public virtual DbSetView_StudentCourse> View_StudentCourse get; set; public virtual ObjectResultGetCoursesByStudentId_Result> GetCoursesByStudentId(Nullableint> studentId) var studentIdParameter = studentId.HasValue ? new ObjectParameter("StudentId", studentId) : new ObjectParameter("StudentId", typeof(int)); return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("GetCoursesByStudentId", studentIdParameter); public virtual int sp_DeleteStudent(Nullableint> studentId) var studentIdParameter = studentId.HasValue ? new ObjectParameter("StudentId", studentId) : new ObjectParameter("StudentId", typeof(int)); return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_DeleteStudent", studentIdParameter); public virtual ObjectResultNullabledecimal>> sp_InsertStudentInfo(Nullableint> standardId, string studentName) var standardIdParameter = standardId.HasValue ? new ObjectParameter("StandardId", standardId) : new ("StandardId", typeof(int)); var studentNameParameter = studentName != null ? new ObjectParameter("StudentName", studentName) : new ObjectParameter("StudentName", typeof(string)); return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunctiondecimal>>("sp_InsertStudentInfo", standardIdParameter, studentNameParameter); public virtual int sp_UpdateStudent(Nullableint> studentId, Nullableint> standardId, string studentName) var studentIdParameter = studentId.HasValue ? new ObjectParameter("StudentId", studentId) : new ObjectParameter("StudentId", typeof(int)); var standardIdParameter = standardId.HasValue ? new ObjectParameter("StandardId", standardId) : new ObjectParameter("StandardId", typeof(int)); var studentNameParameter = studentName != null ? new ObjectParameter("StudentName", studentName) : new ObjectParameter("StudentName", typeof(string)); return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_UpdateStudent", studentIdParameter, standardIdParameter, studentNameParameter); As you can see in the above example, context class (SchoolDBEntities) includes entity mix of type DbSet for all the entities. Learn more about DbSet class here. It also includes functions for the stored procedures và views included in EDM.

Như bạn có thể thấy vào ví dụ bên trên, lớp context (SchoolDBEntities) có tập thực thể của kiểu DbSet đến toàn bộ đều thực thể. Nó cũng tất cả đều hàm cho stored procedures and views included trong EDM.

Lớp Context ghi đtrần pmùi hương thức OnModelCreating. Tmê mẩn sốDbModelBuilder được Điện thoại tư vấn là Fluent API, nó hoàn toàn có thể sử dụng nhằm cấu hình phần đông thực thể trong cách thức tiếp cận Code-First.

Cài đặt DbContext:

Quý Khách có thể sử dụng DbContext bằng cách thiết lập lớp context cùng thực hiện đến thao tác CRUD như bên dưới.

Xem thêm: Tổ Chức Trò Chơi Âm Nhạc Cho Trẻ Mầm Non Thú Vị Nhất, Tổng Hợp Những Trò Chơi Âm Nhạc Mầm Non Hay

using (var ctx = new SchoolDBEntities()) //Can perkhung CRUD operation using ctx here..

Getting ObjectContext từ DbContext:

DBContext API là dễ sử dụng hơn ObjectContext API đến toàn bộ các tác vụ thông thường. Tuy nhiên bạn có thể rước tham chiếu của ObjectContext từ DBContext nhằm áp dụng gần như tác dụng của ObjectContext. Điều này hoàn toàn có thể thực hiện bằng phương pháp sử dụng IObjectContextAdpter nhỏng bên dưới:

using (var ctx = new SchoolDBEntities()) var objectContext = (ctx as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext; //use objectContext here..

EDM cũng khởi tạo ra những lớp thực thể. Học về gần như vẻ bên ngoài không giống nhau của thực thể trong phần tiếp sau.