首页 文章

访问ASP.NET Core MVC模型中的_context

提问于
浏览
2

我正在尝试从ASP.NET Core 1.0 MVC项目中的模型中与数据库进行交互 . Scaffolding已用于从模型创建控制器和视图 .

理想情况下,我想像在控制器中使用_context一样访问它,但我找不到这样做的方法 .

我还尝试从模型创建一个新连接:

using (var context = new ApplicationDbContext()){
    // Code here
}

但是ApplicationDbContext构造函数需要选项参数,例如我从配置中检索失败的默认连接字符串 .

Public ApplicationDbContext(DbContextOptions options) : base(options) {
}

我的猜测是我误解了一些非常基本的东西,因为这应该很容易做到 .

有什么想法吗?

1 回答

  • 2

    正如其他人告诉你的那样,使用依赖注入方式 .

    这是一个真实的例子(使用postgresql):

    Startup.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
    
            ...
        }
    

    在您的控制器中(api控制器的示例):

    [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.(...);
            ...
        }
    }
    

    这里有一个完整的例子(你可以向下滚动到"Create the Database Context"):https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

    希望能帮助到你 .

相关问题