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来作曲。