gpt4 book ai didi

c# - 从 Core 控制台应用程序连接到 Core MVC 应用程序数据上下文

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:02 24 4
gpt4 key购买 nike

我遇到一个问题,要求我在与我的 Core 2.0 MVC Web 应用程序相同的项目中创建一个新的 Core Console 应用程序。在我的 MVC 应用程序中,我可以通过系统数据上下文轻松连接到我的数据库。但是,当我尝试在我的控制台应用程序中使用相同的代码进行连接时,查询将返回数据库为空。我在控制台应用程序中引用了我的 MVC 项目,但没有成功。提前致谢。请看下面:

数据上下文

public class SystemDataContext : DbContext
{
public SystemDataContext(DbContextOptions<SystemDataContext> options)
: base(options)
{ }

public DbSet<Facility> Facility { get; set; }
}

MVC - 有效

public class FacilityService
{
private SystemDataContext db;
public FacilityService(SystemDataContext dataBase)
{
db = dataBase;
}

public List<Facility> GetFacilities()
{
var facilities = db.Facility.ToList();
return facilities;
}
}

控制台应用程序 - 返回数据库空错误

public class Program
{
private SystemDataContext db;
public Program(SystemDataContext dataBase)
{
db = dataBase;
}

public static void Main(string[] args)
{

var facilities = db.Facility.ToList();

Console.WriteLine("Hello World!");
}
}

最佳答案

那是因为 MVC Core 正确配置了依赖注入(inject),与控制台应用程序相反。

在您的控制台应用程序中,您可以使用以下方法手动实例化您的 DbContext:

var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");

var configuration = builder.Build();
var optionsBuilder = new DbContextOptionsBuilder<SystemDataContext>();
optionsBuilder.UseSqlServer(configuration.GetConnection("DefaultConnection"));
var db = new SystemDataContext(optionsBuilder.Options);

您的控制台应用程序中也应该有包含正确连接字符串的 appsettings.json

It would be also a good idea to put your DbContext in a class library project, and reference it from both the MVC and Console apps.

关于c# - 从 Core 控制台应用程序连接到 Core MVC 应用程序数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50828592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com