gpt4 book ai didi

c# - 在 'TContext' 上找不到无参数构造函数

转载 作者:行者123 更新时间:2023-11-30 21:41:41 25 4
gpt4 key购买 nike

我不太清楚为什么会发生错误。当我第一次搭建我的项目时,迁移和更新数据库命令运行良好,但在对应用程序进行一些更改后,我得到了 this error .唯一的解决方案是 this :

public class BloggingContextFactory : IDbContextFactory<BloggingContext>
{
public BloggingContext Create()
{
var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseSqlite("Data Source=blog.db");

return new BloggingContext(optionsBuilder.Options);
}
}

我的 DbContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext
{
public DbSet<ApplicationUserCode> ApplicationUserCodes { get; set; }

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}

protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}

它对我有用,但连接字符串是硬编码在类中的,这对我来说不是很好。非常感谢任何关于为什么这个错误没有一次发生但后来发生的澄清,这也是一个比在类中嵌入连接字符串更优雅的解决方案。

最佳答案

你有吗

public class BloggingContext : DbContext
{
public BloggingContext(){ // << The reason....

}
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ }

public DbSet<Blog> Blogs { get; set; }
}

另一个原因是在 OnModelCreating( ){} 方法本身的顶部。让我想了想为什么......然后我尝试了一些东西,低,看它是一个简单的无参数构造函数,它看起来是罪魁祸首。

 protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder); //<< Absolutely required at the top.
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);

编辑

//Startup.cs ConfigureServices(IServiceCollection服务)

 services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("SqliteConnection")));

//appsettings.json

{
"ConnectionStrings": {
"DefaultConnection": "Data Source=(LocalDb)\\MssqlLocalDb;Initial Catalog=PilotSystemCore;Integrated Security=True",
"SqliteConnection" : "Data Source=SqliteDbName.db"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

注意:如果您之前使用 SqlServer 进行过任何迁移,则生成的项目长期有效,重做迁移。

关于c# - 在 'TContext' 上找不到无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076088/

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