Unit of work là gì

     

Mình sẽ gọi về unit of work pattern kết phù hợp với repository pattern.Unit of work mục tiêu để các controller Lúc tiến hành thêm xóa sửa database thì dbContext sẽ dùng phổ biến với nhau nuốm vì 1 controller sinh sản 1 DbContext.Các các bạn cho doanh nghiệp hỏi, giả dụ thực hiện dependency injection (DI) và phối lifetime mang đến DbContext là scoped (1 request tạo ra 1 cái) thì tất cả đúng vào lúc nói unit of work không thể bổ ích nữa?


Mình cũng new gọi C# (vày dnh có nhiều bạn pro-C# thừa phải thử xem sao) được vài ngày cần mặc dù nguyên tắc của UoW+RP. là tương tự như trên những ngôn từ không giống, implementation của UoW+RP bên trên Entity Framework hoàn toàn có thể sẽ không hoàn toàn nhỏng biện pháp mình đọc cùng viết dưới đây.

Bạn đang xem: Unit of work là gì

Như cách các bạn nói:

Unit of work mục tiêu nhằm các controller Khi tiến hành thêm xóa sửa database thì dbContext đang sử dụng chung cùng nhau thế bởi 1 controller tạo thành 1 DbContext.

Thì nó chỉ cần 1 phần của UoW, mục đích bao gồm của UoW là tạo nên 1 abstraction layer giữa ngắn gọn xúc tích tên miền cùng persistance medium (điều này đúng ra là trường đoản cú Repository Pattern) + keep trachồng of the object changes (có thể phát âm là số đông thay đổi của object - phía bên trong xúc tích và ngắn gọn tên miền - hồ hết cần được ghi nhận) nhằm sau đây đang reflect lên persistance medium.

Theo nhỏng ví dụ bên trên msdn thì dbcontext chỉ là một thành phần nằm trong UoW (tuy vậy có rất nhiều biện pháp implementation không giống nữa), chúng ta cũng có thể xem tại: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

Trsống lại câu hỏi của bạn:


*
dinhphhu951998:

Các các bạn cho mình hỏi, giả dụ thực hiện dependency injection (DI) và set lifetime mang đến DbContext là scoped (1 request tạo ra 1 cái) thì bao gồm đúng khi nói unit of work không còn bổ ích nữa?

Không trọn vẹn, UoW vẫn cực kỳ có lợi trong các trường đúng theo sau:

Business tên miền của người tiêu dùng phức hợp.Logic domain của người sử dụng phức hợp.Parallel execution.

Xem thêm: Mobomarket For Ios 5 - Mobomarket For Ios Mac Download

Trong khi m không rõ vấn đề bạn áp dụng DI trong ngôi trường phù hợp này vẫn ra làm sao, theo m đọc thì nó ở hoàn toàn tại 1 layer khác.

Để m rước ví dụ cho 1 vào 3 ngôi trường hợp trên.

Course course = unitOfWork.CourseRepository.GetByID(id);course.name = "That"s how UoW works"https:// 100 lines of codescourse.slug = "that"s-how-uow-works"unitOfWork.CourseRepository.Update(course);vào ví dụ bên trên thì unitOfWork vẫn theo dõi cục bộ chuyển đổi của object course, so sánh cùng với repository của nó, cùng update số đông biến hóa kia vào persistance medium (sống đó là Entity Framework).

Xem thêm: Master Yi Người Tuyết - Giá Trang Phục Tìm Hiểu Lễ Hội

Dĩ nhiên, cùng với phần nhiều trường phù hợp đơn giản và dễ dàng nhỏng ví dụ bên trên, bạn hoàn toàn rất có thể chẳng đề xuất áp dụng UoW làm cái gi cả, chúng ta thậm chí còn viết luôn luôn sql với query ngay tại controller, tuy nhiên bạn sẽ cần thiết decouple được những yếu tố, mang tới cạnh tranh viết thử nghiệm, cạnh tranh gia hạn giỏi unpredictable code.


Chuyên mục: Tin Tức