如何在.Net core控制台应用程序中使用依赖注入

2024-02-29

我必须使用控制台应用程序将数据添加到我的数据库中。在 Main() 方法中我添加了:

var services = new ServiceCollection();
var serviceProvider = services.BuildServiceProvider();
var connection = @"Server = (localdb)\mssqllocaldb; Database = CryptoCurrency; Trusted_Connection = True; ConnectRetryCount = 0";
services.AddDbContext<CurrencyDbContext>(options => options.UseSqlServer(connection));

在另一个类中,我添加了使用数据库的功能,使其像 Web Api 应用程序一样,并将我的 DbContext 添加到构造函数中:

public AutoGetCurrency(CurrencyDbContext db) =>  this.db = new CurrencyDbContext();

这会产生以下错误:

你调用的对象是空的

我尝试添加一个不带参数的默认构造函数,但它仍然给出相同的错误。

请告诉我如何在 .Net core 控制台应用程序中使用 DI?


在构建提供者之前将服务添加到集合中。在您的示例中,您在构建提供程序后添加服务。对集合所做的任何修改对构建后的提供程序都没有影响。

var services = new ServiceCollection();
var connection = @"Server = (localdb)\mssqllocaldb; Database = CryptoCurrency; Trusted_Connection = True; ConnectRetryCount = 0";
services.AddDbContext<CurrencyDbContext>(options => options.UseSqlServer(connection));
//...add any other services needed
services.AddTransient<AutoGetCurrency>();

//...

////then build provider 
var serviceProvider = services.BuildServiceProvider();

另外,在构造函数示例中,您仍在初始化数据库。

public AutoGetCurrency(CurrencyDbContext db) =>  this.db = new CurrencyDbContext();

注入的数据库未被使用。您需要将注入的值传递到本地字段。

public AutoGetCurrency(CurrencyDbContext db) =>  this.db = db;

正确配置后,您可以通过提供程序解析您的类,并让提供程序在解析请求的服务时创建和注入任何必要的依赖项。

var currency = serviceProvider.GetService<AutoGetCurrency>();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在.Net core控制台应用程序中使用依赖注入 的相关文章

  • 在搜索 List 时,为什么 Enumerable.Any(Func predicate) 比带有 if 语句的 foreach 慢

    最近有件事引起了我的好奇心 Why is the Enumerable Any Func
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 在 Postgres 中收集递归 JSON 键

    我有 JSON 文档以 JSON 数据类型 Postgres 9 3 存储在 Postgres 中 并且我需要递归地收集树中的键名称 例如 给定这个 JSON 树 files folder file1 property blah file2
  • 更改 EF4 中的数据库表名称(实体框架 4)

    有谁知道如何更改 EF4 实体框架 4 中实体的映射数据库表 稍后编辑 我想我已经在模型浏览器中找到了定义表名称的位置 但它们的名称是只读的 因此无法使用设计器对其进行编辑 另外 在 xml 模式中没有对表名称的引用 根据我的搜索 如果您只
  • unittest 测试用例中的重复代码

    我有一个如下所示的测试用例 def MyTestCase unittest Testcase def test input01 self input read from disk input01 output run input valid
  • 为什么字符范围类 [A-z] 匹配下划线?

    在多种语言中尝试过 结果相同 JavaScript 示例 A z test gt true A z test 0 gt false A z test gt false A z test A gt true 为什么第一个病例没有返回false
  • 使用 JavaScript 调整图像大小并保存到磁盘

    我试图将由 JavaScript 完成的调整大小的图像上传到服务器 所以我尝试使用调整大小的图像设置文件输入 后来我才知道除非用户选择文件 否则我们无法更改文件输入 https stackoverflow com questions 169
  • 如何在服务器上定位Sh​​arepoint文档库源页面?

    我正在使用 Sharepoint 文档库 并且正在尝试查找文档库页面的源 我正在 Sharepoint 服务器上工作 我就是找不到它 它应该存放在哪里 谢谢你 SharePoint 不会将页面直接存储在文件系统中 该机制有点不那么简单 要了
  • 多线程游戏 - 更新、渲染以及如何拆分它们

    所以 我正在开发一个游戏引擎 并且已经取得了很好的进展 然而 我的引擎是单线程的 将更新和渲染分成单独的线程的优点听起来是一个非常好的主意 我该怎么做 单线程游戏引擎 概念上 非常容易制作 你有一个更新 gt 渲染 gt 睡眠 gt 重复的
  • Docker:b'json:无法将数字解组到字符串类型的 Go 结构字段 LogConfig.Config 中

    我在 docker compose 中将我的应用程序配置为使用轮换日志 遵循以下站点中的操作 https medium com Quigley Ja rotating docker logs keeping your overlay fol
  • Maven资源过滤

    我想将构建信息写入属性文件 我找到了 Maven 资源过滤插件 这就是我的 pom 相关部分的样子
  • 如何应用结构来对视图控制器操作的数据进行建模

    我尝试在应用程序设计中更多地采用 Swift 的值类型 但我遇到了一些初学者困难 我知道那些基于意见的 StackOverflow 格式通常不太受欢迎 但我认为这里有可能不是特别主观的最佳实践 我理解结构的所有理论上的好处 关于避免共享可变
  • 无法绑定到“ngForOf”,因为它不是 Angular 9 中“tr”的已知属性

    ngFor在我的应用程序中不起作用 我将我的应用程序分成单独的模块并包含import CommonModule from angular common 进入我的子模块并import BrowserModule from angular pl
  • 将常量呈现到 XML 文档中?

    我有 2 个私有常量和一个公共方法 private const byte minAge 24 private const byte maxAge 29 public bool IsInAgeRange 我正在添加 XML 文档 并且希望我的
  • TFSBuild 命令行 / vNext 2015

    前提 我认为这是 TFS 2015 中的错误 缺失功能 当我使用 TFS 网站创建新的构建 非 xaml 定义时 我无法使用命令行调用它TFSBuild start命令 如果我创建标准 XAML 定义 我可以使用命令行启动它 知道命令行是否
  • Flyway并发迁移

    我们有许多项目在许多服务器上运行 并查找一个数据库 我们正在考虑为每个项目设置 Flyway 来控制我们的数据库结构 但是我们担心并发迁移问题 如果某些项目在同一时间重新部署 当然 我们总是关心sql语法中的 如果存在 的事情 当同一数据表
  • Laravel 更改输入值

    在 Laravel 中 我们可以通过以下方式获取输入值Input get inputname 我尝试通过这样做来改变值Input get inputname new value 但后来 我收到错误消息说Can t use function
  • 处理包含多行的 Excel 文件时出现错误 502

    处理包含多行的 Excel 文件时出现错误 502 使用 Django Nginx 问题不在于文件的大小小于 1Mb 此页面可以正常处理 200 行的文件 当文件有更多行时问题就会出现 然后页面处理此文件的时间太长 这是错误 2012 07
  • 将图例移动到 ggplot2 的底部[重复]

    这个问题在这里已经有答案了 我创建了以下热图 如果您注意到群组的图例位于右侧且垂直放置 如何将图例移动到底部 以便为 X 轴变量月份 M0 到 M55 提供更多空间 此外 您会注意到 X 轴元素重叠 因此不清楚 图表的输出 cohort c
  • 拆分 pandas DataFrame 元素中的字符串并重新组合列表的一部分

    我试图弄清楚如何在 pandas 元素中拆分字符串 然后重新组合拆分字符串的一部分 我有以下代码 import pandas as pd df pd DataFrame code PC001 S002 D CFI4 1 NN PC001 S
  • .NET 控制台应用程序中的 Thread.CurrentPrincipal

    这是我在命令提示符下运行的一个简单的控制台应用程序 using System using System Threading namespace Test internal class Runner STAThread static void
  • 如何在.Net core控制台应用程序中使用依赖注入

    我必须使用控制台应用程序将数据添加到我的数据库中 在 Main 方法中我添加了 var services new ServiceCollection var serviceProvider services BuildServiceProv