c# - 在 ASP.NET Core 中使用 ADO.NET 作为数据访问层

标签 c# asp.net asp.net-core ado.net

我正在尝试为我的 ASP.NET Core API 推出高性能 DAL。我想使用 ADO.NET,但在设计软件架构时遇到困难。我正在寻求帮助讨论一个好的方法。

我有什么

我的代码库将包含三个项目

  • MyApp.API
  • MyApp.Repositories(数据访问层)
  • MyApp.Services(业务逻辑)

我将在 MyApp.Repositories 中实现 IUnitOfWork,并在 MyApp.API 中创建具体的 SqlUnitOfWorkStartup.cs 将把 IUnitOfWork 注册到 SqlUnitOfWork。稍后,当我获得更多数据源(Mongo 等)时,我可以合并一个 UnitOfWorkFactory

问题

  1. 我应该在 Startup.cs 中注册每个存储库还是简单地将它们添加为 IUnitOfWork 的属性?这里的想法是我会在我的 Controller 、服务和存储库中使用依赖注入(inject),但只需注入(inject) IUnitOfWork

  2. 如何将连接字符串传递到 SqlUnitOfWork 中?我知道连接字符串应保留在 MyApp.API 内。

最佳答案

另一个答案无关紧要,因为它建议我使用 EF,而我想避免使用 EF。

我使用存储库模式实现了 Dapper。我没有使用工作单元,因为我认为这会导致我不希望出现的性能损失。

这是我实现的原始原型(prototype)。 https://github.com/lenardchristopher/AdoAspDotNetCoreTest

关于c# - 在 ASP.NET Core 中使用 ADO.NET 作为数据访问层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52239612/

相关文章:

javascript - 无法从 StripePaymentIntent 对象检索元数据

c# - 枚举只命名为整数、类型还是两者都不命名?

c# - 将变量传递给类中的计时器事件

asp.net - ASP.NET Web API中基于属性的路由与命令式路由的具体优缺点是什么?

c# - 带有参数的 ASP.NET Core Razor 页面路由

c# - 来自客户端的集线器方法未在 ASP.NET Core SignalR 中调用

c# - 创建 url 正则表达式来解析域名

c# - .NET/SQLite。插入父/子记录;我如何获得外键?

c# - Itext 7 - PdfReader 未使用所有者密码错误打开

asp.net - ASP .NET 与 MySQL - 使用 TINYINT 与 asp :Checkbox