zoukankan      html  css  js  c++  java
  • ASP.NET Core 配置 EF 框架服务

    原文:ASP.NET Core 配置 EF 框架服务 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core 配置 EF 框架服务

    上一章节中我们了解了 Entity Framework 的基本工作原理和 DbContext ,我们也创建了一个自己的 HelloWorldDBContext。 本章节我们就来讲讲如何设置我们的 EF 框架来链接到 SQLite 数据库

    配置 EF 框架服务

    要让我们的 EF 框架的 DBContext 能够运行起来,我们需要更改一下应用程序的配置

    我们需要添加一个数据库连接字符串,以便我们的 HelloWorldDBContext 知道要去哪个服务器以及要查询哪个数据库

    我们需要做以下工作:

    1. 将把数据库连接字符串保存在一个 JSON 的配置文件中
    2. 同样的,还需要在 Startup 类的 ConfigureServices 方法中添加 EF 服务
    3. EF 框架和 ASP.NET 和 MVC框架一样,都使用依赖注入。为了能够注入,运行时需要知道 EF 框架使用的各种服务
    4. 当然了,有一个简单的配置 API 可以用来添加我们需要的所有默认服务

    好吧,开始吧

    双击打开 AppSettings.json 文件,并添加以下数据库连接字符串

    "database": {
        "connection": "Data Source=blogging.db"
    }
    

    添加完成后,AppSettings.json 文件全部内容如下

    {
      "message":"Hello World!
    你好,简单教程,你的网址是 www.twle.cn 吗?",
      "database": {
        "connection": "Data Source=blogging.db"
      }
    }
    

    我们使用的是相对路径,在 SQLite 中使用相对路径时,路径将与应用程序的主程序集相关。

    在我们的 HelloWorld 项目中,主要二进制文件是 bin/Debug/netcoreapp2.1/ConsoleApp.SQLite.dll,因此 SQLite 数据库将位于 bin/Debug/netcoreapp2.1/blogging.db 中

    接下来,我们双击打开 Startup.cs 文件,转到 Startup

    我们需要为 Entity Framework Core 添加一些额外的服务才能正常工作

    具体来说,我们需要做的两件事情:

    1. 添加与 SQLite 相关的 EF 框架服务
    2. 告诉 EF 框架我们的 DBContext 是哪个类

    所有这些都可以通过在 IServiceCollection 上使用扩展提供的方法来完成,如以下程序中所示

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    
        services.AddEntityFrameworkSqlite()
            .AddDbContext<HelloWorldDBContext>
                (options => options.UseSqlite(Configuration["database:connection"]));
    }
    

    由于 EF 框架可以兼容和处理不同类型的数据库,包括非关系数据库,我们需要告知 EF 实体框架添加 SQLite 相关的服务

    然后还需要通过 AddDbContext() 方法告诉 EF 框架我们的 DBContext 类,方便它可以适当地构造该类的实例

    AddDbContext() 方法 接受一个泛型类型参数,我们指定了 DBContext 派生类的类型 HelloWorldDbContext

    在 AddDbContext() 方法中,我们需要设置我们的 DBContext 的选项

    设置选项可以通过 lambda表达式 来完成,我们所需要做的就是告诉 EF 框架我们的 DBContext 将转到 UseSqlite

    到此为止,我们的配置 EF 框架服务工作总算是完成了,接下来我们将学习如何设置数据库,迁移数据库

    尝试,尝试,再尝试
  • 相关阅读:
    ES6中变量的解析赋值的用途
    ES6中的Set与Map数据结构
    cocos2d-js 序列帧动画
    cocos2d-x坐标系详解
    【javascript】函数中的this的四种绑定形式
    ECMAScript 定义类、对象
    JS中函数参数值传递和引用传递
    作用域
    List<Map>如何根据Map的特定key对应的value对List排序?
    SQL字符型字段按数字型字段排序实现方法
  • 原文地址:https://www.cnblogs.com/jiejiehencool/p/11101081.html
Copyright © 2011-2022 走看看