我正在尝试从 ASP.NET Core 1.0 MVC 项目的模型中与数据库交互。 脚手架已用于从模型创建 Controller 和 View 。
理想情况下,我想像在带有 _context 的 Controller 中那样访问它,但我找不到这样做的方法。
我还尝试从模型创建一个新连接:
using (var context = new ApplicationDbContext()){
// Code here
}
但是 ApplicationDbContext 构造函数需要选项参数,例如我从配置中检索失败的默认连接字符串。
Public ApplicationDbContext(DbContextOptions options) : base(options) {
}
我的猜测是我误解了一些非常基本的东西,因为这应该很容易做到。
有什么想法吗?
最佳答案
正如其他人告诉您的那样,方法是使用依赖注入(inject)。
这是一个真实的例子(使用 postgresql):
启动.cs:
public void ConfigureServices(IServiceCollection services)
{
...
#region PostgreSQL
var sqlConnectionString = Configuration.GetConnectionString("your connection string name");
// Use a PostgreSQL database
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(
sqlConnectionString,
b => b.MigrationsAssembly("Your.Assembly.Name")
)
);
#endregion
...
}
在您的 Controller 中(api Controller 示例):
[Produces("application/json")]
[Route("api/MyController")]
public class MyController : Controller
{
private readonly ApplicationDbContext _context;
public DatasourceDataController(ApplicationDbContext context)
{
_context = context;
}
[HttpGet()]
public async Task<IActionResult> DoSometing()
{
...
await _context.(...);
...
}
}
这里有一个完整的示例(您可以向下滚动到“创建数据库上下文”):https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
希望对您有所帮助。
关于c# - 在 ASP.NET Core MVC 模型中访问 _context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45462139/