我不确定我在做什么错误,我想使用来自appsettings.json的连接字符串并使用DI来设置我的DbContext以供使用。ASP.NET Core中的连接字符串DI
{
"ConnectionStrings": {
"DarkwinterDatabase": "server=localhost;userid=user;pwd=pass;port=3306;database=Darkwinter;sslmode=none;"
},
...
}
在Startup.cs的ConfigureServices方法中,我有以下代码。
services.AddDbContext<PostContext>(options =>
options.UseMySQL(Configuration.GetConnectionString("DarkwinterDatabase")));
我的DbContext具有一个DbSet并接受DbContextOptions传递给基座被初始化。这是我认为我错了的地方,但是如果DI将选项传递给此类?
public class PostContext : DbContext
{
public PostContext(DbContextOptions options) : base(options) { }
public DbSet<Post> Post { get; set; }
}
如何过,当我尝试使用我的背景,我得到一个错误:没有给定参数对应于PostContext.PostContext的”所需的形式参数“选项”(DbContextOptions)
using(var db = new PostContext())
{
var posts = db.Post.ToList();
return View(posts);
}
这是有道理的,因为我没有通过,但我认为服务应该这样做?我知道我正在考虑这个错误的方式,并希望有人会花时间向我解释。
什么是DI发动机你使用?你在哪里配置DI来了解'DbContextOptions'类型的对象? – Emad