gpt4 book ai didi

c# - 使用配置调用了 AddDbContext,但是上下文类型 'MyContext' 只声明了一个无参数构造函数?

转载 作者:IT王子 更新时间:2023-10-29 04:10:52 24 4
gpt4 key购买 nike

在以下控制台应用程序(.Net core 2.0)中,scaffold-dbcontext 创建了以下 DbContext

public partial class MyContext : DbContext
{
public virtual DbSet<Tables> Tables { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(Program.Conn); }
}

protected override void OnModelCreating(ModelBuilder modelBuilder) { .... }
}

在Main()(static void Main(string[] args))中,如下代码

var services = new ServiceCollection();
var conn = configuration.GetConnectionString("MySource");
services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error

遇到以下运行时错误?

AddDbContext was called with configuration, but the context type 'MyContext' only declares a parameterless constructor. This means that the configuration passed to AddDbContext will never be used

最佳答案

如错误所述,如果您配置 MyContext通过AddDbContext那么您还需要添加一个构造函数来接收 DbContextOptions<MyContext> 类型的参数进入你的MyContext类如下

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

如果您不这样做,ASP.Net Core 将无法注入(inject)您使用 AddDbContext 设置的配置.

关于c# - 使用配置调用了 AddDbContext,但是上下文类型 'MyContext' 只声明了一个无参数构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947795/

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