【发布时间】:2018-10-02 23:57:02
【问题描述】:
我试图解决这个问题,但我被卡住了。
我有一个带有 Service/Repo/Api/Angular 层的 Net Core 2 应用程序 - 但现在我想“连接”一个控制台应用程序并访问我已经构建的所有好东西。我似乎陷入了一堆静态对象以及 DI 和 null 参数中。无论如何,这是我的代码的简化版本。
namespace SimpleExample
{
class Program
{
private static ApplicationDbContext _appDbContext;
public Program(ApplicationDbContext appDbContext)
{
_appDbContext = appDbContext;
}
static void Main(string[] args)
{
var instance = new Program(); // this doesn't work!
var instance = new Program(_appDbContext); // neither does this!
instance.GetData();
}
private void GetData()
{
Console.WriteLine("Let's read some data! Press a key to continue.");
Console.ReadLine();
var data = "my data";
var result = GetId(data);
}
private string GetId(string original)
{
var data = _appDbContext.Data
.Where(x => x.Name == original.Trim)
.FirstOrDefault();
return data;
}
}
}
我得到了经典
'非静态字段需要对象引用'
错误。然后从这里的调查开始,我将事物更改为静态,然后一切都变为空。
这不仅仅是我试图注入的 DbContext。我也在尝试注入
私有ManagerService_managerService;
但遇到同样的错误。
更新
如果我尝试
私有静态 ApplicationDbContext _appDbContext = new ApplicationDbContext();
按照下面几次的建议,然后我得到了错误
没有给出与所需形式相对应的参数 参数“选项”的 'ApplicationDbContext.ApplicationDbContext(DbContextOptions)'
【问题讨论】:
-
你在哪里实例化
_appDbContext? -
试试
private static ApplicationDbContext _appDbContext = new ApplicationDbContext();
标签: c# dependency-injection .net-core console-application