c# - 在 ASP.NET Core MVC 模型中访问 _context

标签 c# asp.net asp.net-mvc asp.net-core-mvc asp.net-core-1.0

我正在尝试从 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/

相关文章:

c# - 在标签中显示部分程序的运行时间

asp.net - asp 菜单 css 的浏览器兼容性在 google chrome 中不起作用

javascript - AJAX 调用 : Invalid web service call, 参数缺少值

c# - MVC 5 请求域 url

asp.net-mvc - MVC Razor : Helper method to render alternate content when empty

c# - 查找对象是否具有特定方法

c# - 将依赖项注入(inject)动态加载的 .dll (.net core)

c# - 如何确保 c# 解决方案中的所有项目都使用相同版本的第三方库?

javascript - 从JS中的选择列表中获取值

asp.net-mvc - 将 {api} 更改为 {#} ASP.net Web API