iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
Modern Web

ASP.NET Core 入門實戰30天系列 第 23

Day 23 使用ASP .NET Core 手把手打造一個購物網站 - 新增Repository

  • 分享至 

  • xImage
  •  

前言

根據昨天建出來的seed data
雖然目前已經有Product Model
但還不夠完整
今天繼續Model的部分,增加相關的interface和Repository
並且夠過DBContext去取得DB裡面的資料

Model

這一篇主要針對Product這個Model去做調整
透過interface,去分別實作model的方法
注入到要使用的controller裡面,呼叫其方法
有點類似service的概念,只是透過interface去實作

Step by step

  1. 建立Interface
    先在Model下新增一個IProductRepository.cs
    裡面宣告了一個GetAllProduct的屬性以及一個GetProductById的方法

  2. 建立Repository
    同時在Model新增ProductRepository.cs,去實作這個interface
    這邊也一起加上DBContext
    ㄧ樣在 ASP .NET Core 是直接在建構子裡面注入這個Object

     private readonly ShopMvcDbContext _context;
            public ProductRepository(ShopMvcDbContext context)
        {
            _context = context;
        }
    

  3. 將ProductRepository加入初始化service上
    上一部宣告了 ProductRepository
    但還需要註冊到初始化上
    才有辦法透過Repository去連DB使用裡面的方法
    因為是DB的操作,這裡使用AddScoped這個方式

    Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {           
        services.AddControllersWithViews();
        services.AddScoped<IProductRepository, ProductRepository>();
    ...
    
    

    延伸閱讀 : Day 5 Dependency Injection, Service的擴充方法

  4. 在controller使用Repository
    接下來是要修改目前自動建出來的controller method
    以index 這個action來說
    由指令建出來的樣板如下

    目前是直接在controller使用DBContext
    以及action使用async,DBContext也是直接將資料取出
    並沒有另外做一些方法可以拿來使用

    這邊先另外注入前面新增的interface,在controller直接call相關的方法或參數

      private readonly IProductRepository _productRepository;
    
        public ProductController(IProductRepository productRepository)//注入到建構子裡
        {
            _productRepository = productRepository;
        }
        // GET: Product
        public ActionResult Index()
        {
            return View(_productRepository.GetAllProduct);//在productRepository所實作的參數
        }
    
    
  5. 重build一次專案,確認一下結果,顯示的畫面會是相同的

接下來的CRUD也會透過這樣的方法去做改寫



上一篇
Day 22 使用ASP .NET Core 手把手打造一個購物網站 - 新增seed data
下一篇
Day 24 使用ASP .NET Core 手把手打造一個購物網站 - 使用EF Core 異動欄位
系列文
ASP.NET Core 入門實戰30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言