gpt4 book ai didi

c# - 无法创建类型为 'MyContext' 的对象。对于设计时支持的不同模式

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

我在 .NET Core 上有 ConsoleApplication 并且我将我的 DbContext 添加到依赖项,但是我有一个错误:

Unable to create an object of type 'MyContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

我添加了:var context = host.Services.GetRequiredService<MyContext>();我还添加了 private readonly DbContextOptions<MyContext> _opts;在我的帖子类中:

using (MyContext db = new MyContext(_opts))
{
db.Posts.Add(postData);
db.SaveChanges();
}

这是我添加服务的方式:

.ConfigureServices((context, services) =>
{
services.Configure<DataOptions>(opts =>
context.Configuration.GetSection(nameof(DataOptions)).Bind(opts)
);
services.AddDbContext<MyContext>((provider, builder) =>
builder.UseSqlite(provider.GetRequiredService<IOptions<DataOptions>>().Value.ConnectionString)
);
});

这是我的上下文:

public sealed class MyContext : DbContext
{
private readonly DbContextOptions<MyContext> _options;

public DbSet<PostData> Posts { get; set; }
public DbSet<VoteData> Votes { get; set; }


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

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlite("ConnectionString");
}
}
}

我尝试添加迁移并出现此错误

我做错了什么?

最佳答案

我通过向我的 Context 添加一个简单的构造函数来解决这个问题

public class DataContext : DbContext
{
public DataContext()
{
}

public DataContext(DbContextOptions options) : base(options)
{
}

protected override void OnConfiguring(DbContextOptionsBuilder options)
{
if (!options.IsConfigured)
{
options.UseSqlServer("A FALLBACK CONNECTION STRING");
}
}

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

关于c# - 无法创建类型为 'MyContext' 的对象。对于设计时支持的不同模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745481/

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