Nuget trình điều khiển mongodb

Xin chào mọi người, Trong bài viết này mình sẽ giới thiệu cách làm việc với MongoDB trong ASP. NET Core thông qua Repository Pattern. Nếu các bạn đang định làm theo những thứ bên dưới thì bài viết này dành cho các bạn

ASP. NET lõi. https. // tài liệu. Microsoft. com/en-us/aspnet/core/getting-started/?view=aspnetcore-2. 2&tab=cửa sổ

MongoDB. https. //www. mongodb. com/

Mẫu kho lưu trữ. https. // nhà phát triển. đến/kyle galbraith/làm quen-với-kho-kho-mẫu---1ao3-tuyệt-vời

Các công cụ cài đặt

MongoDB

Để kết nối được với MongoDB, đương nhiên trước tiên phải cài đặt MongoDB. Chúng ta sẽ thực hiện triển khai trên Windows và cũng sẽ cài đặt MongoDB trên windows, hãy làm theo các bước sau đây https. // tài liệu. mongodb. com/manual/tutorial/install-mongodb-on-windows/

Trình xem giao diện người dùng MongoDB

Để xem dữ liệu ở MongoDB một cách tường minh trên UI, thì bạn nên cài đặt MongoDB Compass hoặc là Robo3T, nói chung thì xài cái nào cũng được. Cài đặt MongoDB Compass tại đây. https. //www. mongodb. com/products/compass Cài đặt Robo3T tại đây. https. //robomongo. tổ chức/

Triển khai

Ở đây mình sẽ khai triển 1 project CRUD đơn giản, với entity là Lesson

Giải pháp cấu trúc

Giải pháp chia ra làm 4 dự án nhỏ tương ứng với các chức năng

  • Phổ thông. dùng để thực hiện các tác vụ chung, lưu các biến và enum chung
  • Dữ liệu. chính là tầng để thực hiện kết nối đến cơ sở dữ liệu, CRUD ở tầng thấp nhất. Chứa các kho tương ứng với mỗi thực thể
  • Dịch vụ. Sử dụng lại các Repository ở tầng Data để xử lý dữ liệu
  • mạng. chính là tầng trên cùng, bao gồm các bộ điều khiển để gọi đến tầng dịch vụ

Nuget trình điều khiển mongodb

Kho bài học

Đến đây thì chỉ cần tạo thêm kho cho bài học. Bạn có thể thấy mã của nó không có gì cả, vì toàn bộ các phương thức triển khai phương thức đã được viết ở cơ sở lớp rồi.

public interface ILessonRepository : IRepository<Lesson>
    {

    }
public class LessonRepository : MongoRepository<Lesson>, ILessonRepository
    {
        public LessonRepository(IMongoContext context) : base(context)
        {
        }
    }

Tầng dịch vụ

Thực hiện ở tầng dịch vụ khá đơn giản, chỉ cần gọi mã ở kho lưu trữ. Thực ra vì đây là 1 ứng dụng đơn giản CRUD nên tầng dịch vụ khá đơn giản, chỉ bao gồm 1 kho lưu trữ tương ứng, với những ứng dụng lớn hơn thì 1 dịch vụ có thể sử dụng nhiều kho lưu trữ để thao tác dữ liệu

public interface ILessonService
    {
        Task<Lesson> AddLessonAsync(Lesson obj);
        Task<Lesson> UpdateLessonAsync(string id, Lesson obj);
        Task<bool> RemoveLessonAsync(string id);
        Task<Lesson> GetByIdAsync(string id);
        Task<IEnumerable<Lesson>> GetAll();
    }
public class LessonService : ILessonService
    {
        private ILessonRepository _lessonRepository;
        public LessonService(ILessonRepository lessonRepository)
        {
            _lessonRepository = lessonRepository;
        }

        public async Task<Lesson> AddLessonAsync(Lesson obj)
        {
            return await _lessonRepository.Add(obj);
        }

        public async Task<IEnumerable<Lesson>> GetAll()
        {
            return await _lessonRepository.GetAll();
        }

        public async Task<Lesson> GetByIdAsync(string id)
        {
            return await _lessonRepository.GetById(id);
        }

        public async Task<bool> RemoveLessonAsync(string id)
        {
            return await _lessonRepository.Remove(id);
        }

        public async Task<Lesson> UpdateLessonAsync(string id, Lesson obj)
        {
            return await _lessonRepository.Update(id, obj);
        }
    }

Bộ điều khiển

Ở đây mình sẽ tạo LessonController và sử dụng LessonService để xử lý dữ liệu. There could be found is follow code of them to rõ ràng. Ở trên web không cần quan tâm đến công việc xử lý bên trong (gọi đến cơ sở dữ liệu, thao tác với các bảng), mọi thứ đã được tầng dịch vụ ở bên dưới xử lý

public class Lesson:BaseEntity
    {
        public string Title { get; set; }
        public string Description { get; set; }
        public string Image { get; set; }     
    }
0

Configure DI

Ở trong toàn bộ dự án, các bạn thấy các lớp chỉ gọi đến và làm việc với các giao diện chứ không gọi trực tiếp các lớp khác. Điều này làm giảm sự phụ thuộc giữa các lớp với nhau. Và nó đúng với nguyên lý D trong SOLID. (các bạn có thể đọc nó ở [đây]) (https. //toidicodedao. com/2016/06/14/loạt-rắn-cho-thanh-nien-mã-cung-phục-biến-nghịch-nguyên/)

Vì vậy cuối cùng chúng ta phải cấu hình DI để gọi giao diện, nó sẽ tìm lớp tương ứng cho chúng ta

public class Lesson:BaseEntity
    {
        public string Title { get; set; }
        public string Description { get; set; }
        public string Image { get; set; }     
    }
1

Thêm chuỗi kết nối trong appSetting. json

public class Lesson:BaseEntity
    {
        public string Title { get; set; }
        public string Description { get; set; }
        public string Image { get; set; }     
    }
2

Đoạn này chính là cấu hình chỉ định kết nối đến kiểm tra cơ sở dữ liệu ở localhost, với bộ sưu tập chỉ định là Bài học

Kết luận

Các bạn hãy thử áp dụng và hiện kết quả xem nhé. Trên đây là hướng dẫn của mình để hướng dẫn bạn cách làm việc với MongoDB trong ASP. NET Core áp dụng Repository Pattern. Hi vọng bài viết có ích. Rất mong được đóng góp ý kiến ​​từ mọi người

Một số bài viết mình đã tham khảo. https. //www. brunobrito. mạng lưới. br/aspnet-core-mongodb-unit-of-work/ https. // tài liệu. Microsoft. com/en-us/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-2. 2&tabs=visual-studio https. //deviq. com/repository-pattern/