ASP Net Core数据库访问

时间:2019-10-17 09:10:34

标签: c# .net database entity-framework core

我的问题是,如何在没有HTML页面的情况下访问dbcontext。 我有一个Web Api项目,Html中的类可以访问数据库,就像这样

    public class CreateModel : PageModel
    {
       private readonly Home5.Models.Home5Context _context;

       public CreateModel(Home5.Models.Home5Context context)
       {
           _context = context;
       }

       public IActionResult OnGet()
       {
           return Page();
       }
    }

但是当我创建自己的类时,由于无法在没有上下文将其提供给构造函数的情况下创建该类的实例,因此无法访问该上下文。

2 个答案:

答案 0 :(得分:0)

sample显示了创建使用实体框架访问数据库的Web API所需的步骤。

要使用您的Home5Context,关键步骤如下:

文件startup.cs

Register带依赖项注入容器的上下文。如果配置正确,这是创建控制器实例并为它们提供上下文实例的组件:

services.AddDbContext<Home5Context>(opt =>
           opt.UseInMemoryDatabase("Home5Database"));

请注意,除了InMemoryDatabase,还有其他几个选项。以下documentation显示了其中的大多数内容。

控制器

将上下文注入控制器:

public class MyController : ControllerBase
{
    private readonly Home5Context _context;

    public TodoItemsController(Home5Context context)
    {
        _context = context;
    }

    // ...

之后,您可以使用上下文并访问控制器中的数据库。


请参阅示例或code。也许有助于在新项目中跟踪样本,然后更改当前项目。

答案 1 :(得分:0)

当我有一个随机类时,如何获取上下文实例。

示例:

def getdigits(n):
    if n<10:
        return [n]
    else:
        return getdigits(n//10)+[n%10]

在这种形式下,我无法创建用于处理该类的实例:

public class work()
{
    public void setValue()
    {
       var context = await _context.firstordefaultasync(....);
       context......
       //Work with that context
       ...save context...
    }
}