c# - MVC 项目的控制器中使用的数据库上下文
问题描述
具体问题-如何将在 ASP.Net CORE Web 应用程序中DbContext
创建的内容反弹到不首先通过控制器的情况下?Startup
Data Access Layer
目前的模式是:
request starts ---> dbcontext created ---> dbcontext passed to controller ---> pass to DAL --> return items
但我真的只想
request starts ---> controller instanced ---> controller calls dal ---> dbcontext created -- return items
我遇到的问题是将配置从 appsettings 获取到 dal。
背景:
在旧的框架项目中,我有一个数据访问层,我在控制器中使用单行语句对其进行实例化和处理,通常如下所示:
List<stuff> MyListOfStuff = new DAL().GetStuff();
Return View(MyListOfStuff)
通常使用链式语法或所需的任何映射方法将这些列表/对象映射到同一行中的 ViewModel。
上下文在 DAL() 创建期间被实例化,并从 global.asax 或 web.config 获取其参数
我很确定我最终养成了这个习惯,因为(我认为)我在很多地方读到了业务逻辑和数据访问逻辑不应该放在控制器中。控制器应该尽可能少?
我现在正在学习 asp.net 核心,其中上下文在启动时配置并实例化并默认传递给控制器,而 MSDN 教程显示我们应该在控制器中直接使用该上下文而不使用或传递它到另一层。
教程是否只是向我们展示了一种快速、最少的做事方式以便开始使用,或者这实际上是最佳实践?我更喜欢仅在 DAL 中实例化上下文,并且还没有真正看到其他方式的好处,并且无法弄清楚如何将我appsettings.json
配置的 DbContexts 拉入任何旧的 DAL 类。
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-3.1
解决方案
推荐阅读
- javascript - 吊装内部功能
- javascript - 当输入中的值发生变化时填充输入(角度)
- java - 将 unicode 字符转换为包含其 u+[hexa] 表示形式的字符串 ("\u2030")
- c# - 执行 TfvcClient 的 CreateChangesetAsync 时出现“方法不允许”异常
- php - PHP:修改 LDAP 时访问权限不足
- wordpress - 我可以在另一个网站上嵌入 WP 用户注册表单吗?
- java - How to search and fetch documents from cloud firestore which matches a specific string
- javascript - Change script src before DOM is rendered using JS
- angular - Custom Pipe with checkbox doesn't give correct value
- excel - VBA. Rezise table with dynamic last column