c# - 在 ASP.NET Core 中使用 ADO.NET 作为数据访问层
问题描述
我正在尝试为我的 ASP.NET Core API 推出高性能 DAL。我想使用 ADO.NET,但在设计软件架构时遇到了困难。我正在寻求帮助讨论一个好的方法。
我有的
我的代码库将包含三个项目
- 我的应用程序API
- MyApp.Repositories(数据访问层)
- MyApp.Services(业务逻辑)
我将IUnitOfWork
在内部实现MyApp.Repositories
并创建一个具体SqlUnitOfWork
的MyApp.API
. Startup.cs
将注册IUnitOfWork
到SqlUnitOfWork
。稍后,当我获得更多数据源(Mongo 等)时,我可以合并一个UnitOfWorkFactory
.
问题
我应该在每个存储库中注册
Startup.cs
还是简单地将它们添加为属性IUnitOfWork
?这里的想法是我会在我的控制器、服务和存储库中使用依赖注入,但只需要注入IUnitOfWork
.如何将我的连接字符串传递到
SqlUnitOfWork
? 我知道连接字符串应该保持在MyApp.API
.
解决方案
另一个答案是无关紧要的,因为它建议我使用 EF,这是我想避免的。
我用存储库模式实现了 Dapper。我没有使用工作单元,因为我认为这样做会导致我不希望出现的性能损失。
这是我实现的原始原型。 https://github.com/lenardchristopher/AdoAspDotNetCoreTest
推荐阅读
- android - 如何获取视图的android背景颜色
- c# - 未找到应用程序依赖项清单 (Microsoft.NETCore.App.deps.json) 中指定的程序集
- reactjs - 使用 NEXT.js 实现 Owl 轮播
- anaconda - Anaconda 环境错误 - 找不到 pythoncom38.dll 的过程入口点
- excel - 将公式从绝对转换为相对的问题。参考转移
- windows-subsystem-for-linux - WSL2 无法通过 Windows 访问,但可以通过终端正常工作
- django - nginx - gunicorn - django allauth 重定向到 127.0.0.1 问题,我该如何解决?
- javascript - Bootstrap 5 Accordion - 从不同页面访问时滚动到右侧选项卡
- c++ - 线程安全数组计数器 C++
- flutter - Flutter 无法在 ListTile 上显示 JSON 图像