【发布时间】:2023-01-28 06:10:57
【问题描述】:
我有一个从 VS 2022 模板创建的 ASP.NET Core 6 MVC 应用程序。我正在编写自定义数据访问层和业务逻辑层。
我知道我可以通过 DAL 中的 BLL 从控制器向下传递 _context,但是我更愿意从 DAL 直接访问。我看不出 BLL 或 Web 代码需要与数据访问有任何关系的任何理由。
我已经尝试了几个注入示例,但我似乎无法让它们中的任何一个工作。有人有好的解决方案吗?
编辑:
在 Project.cs 中,我添加了 DbContext:
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
我想在我的自定义数据访问层中访问 DbContext,而不必像这样将 DbContext 从 Controller 一路向下传递到我的 DAL 构造函数:
namespace MyProject.Code
public class CustomDataAccessLayer
{
public string[] GetCustomers()
{
DbConnection conn = DbContext.GetConnection();
//Whatever query logic I want to do here
有什么方法可以直接访问 DbContext 而不必从控制器操作中传入它吗?
【问题讨论】:
-
你能告诉我们你的代码吗?
-
1)注册你的对象。 2)将它们注入课堂。请展示您尝试过的内容。
-
你遇到了什么问题?你不能将
dbCOntext注入 DAL?您需要提供更多详细信息。 -
为了清楚起见,添加到原始问题中。
-
我的最终目标实际上只是获得对 DbContext 连接的访问权限,以便在我的自定义 DAL 中我可以创建一个 SqlConnection 并执行我想要对数据库执行的任何 SQL,而无需考虑单独的实体。如果有另一种方法可以从我的 DAL 获取连接而不必将其从控制器向下传递,我会接受的。
标签: c# asp.net-core-mvc .net-6.0 data-access-layer asp.net-core-6.0