gpt4 book ai didi

c# - 配置DbContext构造函数

转载 作者:行者123 更新时间:2023-12-03 21:56:01 25 4
gpt4 key购买 nike

我正在尝试使用EF Core工具来管理我在C#类库中设计的SqlServer数据库。它在类库中,因为我需要在MVC6网站和某些命令行工具中都使用数据库架构。

我必须将类库转换为netapp,因为该工具的当前版本不支持类库,但是我认为这不是问题的根源。

我的DbContext类看起来像这样:

public class ConnellDbContext : IdentityDbContext<ConnellUser>
{
public ConnellDbContext( DbContextOptions<ConnellDbContext> options )
{
}

// core tables
public DbSet<Ballot> Ballots { get; set; }
public DbSet<Campaign> Campaigns { get; set; }
//...
}

当我在程序包管理器控制台上运行“dotnet ef迁移列表”时,出现以下错误消息:

No parameterless constructor was found on 'ConnellDbContext'. Either add a parameterless constructor to 'ConnellDbContext' or add an implementation of 'IDbContextFactory' in the same assembly as 'ConnellDbContext'.



我不太确定如何解决此问题。插入无参数构造函数很容易,但是当我这样做时,出现以下错误:

No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions object in its constructor and passes it to the base constructor for DbContext.



我>> think <<,这意味着控制台命令没有在我的appsettings.json文件中获取连接字符串信息:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-ConnellCampaigns;Trusted_Connection=True;MultipleActiveResultSets=true;AttachDbFilename=e:\\SqlServer\\Data\\ConnellCampaigns.mdf;"
}
}

我缺少有关EF工具如何访问源代码以实现其神奇效果的一些知识。任何指针或线索将不胜感激。

附加信息

感谢安德森先生,我已经取得了一些进步。我在DbContext类中添加了无参数构造函数并覆盖了OnConfiguring()方法:
protected override void OnConfiguring( DbContextOptionsBuilder optionsBuilder )
{
var builder = new ConfigurationBuilder()
.AddJsonFile( "appsettings.json", optional: true, reloadOnChange: true );

IConfigurationRoot config = builder.Build();

optionsBuilder.UseSqlServer(config.GetConnectionString("DefaultConnection") );
}

那没有用,但是在UseSqlServer()的调用中明确包括了实际的连接字符串。关于为什么基于“DefaultConnection”的调用不起作用的想法?

最佳答案

public class ConnellDbContext : IdentityDbContext<ConnellUser>
{
internal static string connection_string
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
}
}

public ConnellDbContext() : base(connection_string)
{

}
// core tables
public DbSet<Ballot> Ballots { get; set; }
public DbSet<Campaign> Campaigns { get; set; }
//...
}

关于c# - 配置DbContext构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38808604/

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