【发布时间】:2017-08-18 04:15:13
【问题描述】:
我不确定我在这里做错了什么,我想使用 appsettings.json 中的连接字符串并使用 DI 设置我的 DbContext 以供使用。
{
"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)所需的形式参数'options'
using(var db = new PostContext())
{
var posts = db.Post.ToList();
return View(posts);
}
这是有道理的,因为我没有传递一个,但我认为服务应该这样做?我知道我想错了,希望有人能花时间向我解释。
【问题讨论】:
-
您使用的 DI 引擎是什么?您在哪里配置您的 DI 以了解
DbContextOptions类型的对象?
标签: c# asp.net entity-framework asp.net-core