asp core crud example
1.0.0
一個範例 .NET Core 項目,其中包含啟用了副本集和交易的 MongoDB 資料庫。
該專案的目標是為以下主題提供解決方案(用於工作面試):
Please create a sample .net/C# project that includes the following elements:
- Basic CRUD functionality for a data structure of your choice.
- RESTful APIs to expose that functionality with your framework of choice (ASP.NET Web APIs, ASP.NET Core, ServiceStack (preferred), …etc).
- Uses MongoDB using C# driver.
- Please demonstrate your usage of one of MongoDB advanced features (aggregation, transactions, indexes, …etc) using C# driver.
- Please push your code to a Git repository that you can share with us.
這是一個具有 n 層架構的 asp core 3.1 Web API 專案:
每層都有自己的抽象層以避免依賴性。我正在使用庫存.net core IOC 和 DI 引擎。
我沒有進行任何單元測試,因為沒有業務邏輯。不過,我已經使用Microsoft WebHost 庫製作了一個整合測試範例。您可以透過 Visual Studio 或命令列執行整合測試,但不要忘記先執行docker-compose (否則您將沒有任何資料庫可供請求)。
DAL 的實作使用 MongoDB C# 驅動程式。透過執行附加到解決方案的 docker-compose,您將獲得啟用了副本集的 Mongo 伺服器實例(以支援交易)。
作為 MongoDB 高級功能之一的使用演示,我選擇了事務。因此IClientSessionHandle被注入到所有儲存庫。我還設法製作了一個名為TransactionFilter 的中間件,它為整個 HTTP 請求建立一個交易。這樣,我們可以在不同的儲存庫上進行多重文件操作,如果出現問題可能會回滾,而無需手動處理多文檔事務。
例 :
它可以正常工作,但需要進行更多進一步的負載測試。這可能尚未準備好投入生產。
目前,在命令列中使用docker-compose up似乎不適用於該 API。我的時間不多了,所以就繼續用VS來作曲。