概述

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。

EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。

EF Core 支持多个数据库引擎,请参阅数据库提供程序了解详细信息。

基于 .NET Core 的 EF Core 入门

在本教程中,将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 Microsoft SQL Server 数据库执行数据访问。

创建新项目

  • 新建控制台项目:

    执行 PowerShell 命令

    dotnet new console -o ConsoleApp

    如下图

更改当前目录

  • 将当前目录更改为应用程序的目录,如下所示:

    cd ConsoleApp

安装 Entity Framework Core

  • 安装 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools

    dotnet add package Microsoft.EntityFrameworkCore.SqlServer
    dotnet add package Microsoft.EntityFrameworkCore.Tools
  • 运行 dotnet restore 来安装新的程序包。

创建模型

  • 使用以下内容创建一个新的 Model.cs 文件。

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic; namespace ConsoleApp
    {
    public class BloggingContext : DbContext
    {
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    optionsBuilder.UseSqlServer("Server=你的数据库地址;Database=ConsoleApp;User Id=你的数据库账号;Password=你的数据库密码;");
    }
    } public class Blog
    {
    public int BlogId { get; set; }
    public string Url { get; set; } public ICollection<Post> Posts { get; set; }
    } public class Post
    {
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; } public int BlogId { get; set; }
    public Blog Blog { get; set; }
    }
    }

    在实际应用程序中,应将每个类放在单独的文件中,并将连接字符串放在配置文件或环境变量中。 为简化本教程,所有内容均放在一个文件中。

创建数据库

有了模型后,即可通过迁移创建数据库。

  • 运行 dotnet ef migrations add InitialCreate 以为迁移搭建基架,并为模型创建一组初始表。
  • 运行 dotnet ef database update 以将新迁移应用到数据库。 在应用迁移之前,此命令可创建数据库。

使用模型

  • 打开 Program.cs 并将内容替换为以下代码:

    using System;
    
    namespace ConsoleApp
    {
    class Program
    {
    static void Main(string[] args)
    {
    using (var db = new BloggingContext())
    {
    db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
    var count = db.SaveChanges();
    Console.WriteLine("{0} records saved to database", count); Console.WriteLine();
    Console.WriteLine("All blogs in database:");
    foreach (var blog in db.Blogs)
    {
    Console.WriteLine(" - {0}", blog.Url);
    }
    }
    }
    }
    }
  • 运行 dotnet run 从控制台测试应用。

基于 ASP.NET Core 的 EF Core 入门

在本教程中,将使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序。

创建新项目

  • 打开 Visual Studio 2017

  • “文件”>“新建”>“项目”

  • 从左菜单中选择“已安装”>“Visual C#”>“.NET Core”。

  • 选择“ASP.NET Core Web 应用程序”。

  • 输入“WebApplication”作为名称,然后单击“确定”。

  • 在“新建 ASP.NET Core Web 应用程序”对话框中:

  • 确保在下拉列表中选择“.NET Core”和“ASP.NET Core 2.1”

  • 选择“Web 应用程序(模型视图控制器)”项目模板

  • 确保将“身份验证”设置为“无身份验证”

  • 单击“确定”

安装 Entity Framework Core

对于本教程,无需安装提供程序包,因为本教程使用 SQL Server。 SQL Server 提供程序包包含在 Microsoft.AspnetCore.App 元包中。

创建模型

  • 右键单击“Models”文件夹,然后选择“添加”>“类”。

  • 输入“Model.cs”作为名称,然后单击“确定”。

  • 将此文件的内容替换为以下代码:

    using System.Collections.Generic;
    using Microsoft.EntityFrameworkCore; namespace WebApplication.Models
    {
    public class BloggingContext : DbContext
    {
    public BloggingContext(DbContextOptions<BloggingContext> options)
    : base(options)
    { } public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
    } public class Blog
    {
    public int BlogId { get; set; }
    public string Url { get; set; } public ICollection<Post> Posts { get; set; }
    } public class Post
    {
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; } public int BlogId { get; set; }
    public Blog Blog { get; set; }
    }
    }

    生产应用通常会将每个类放在单独的文件中。 为简单起见,本教程将这些类放在一个文件中。

使用依赖注入注册上下文

若要使 BloggingContext 可用于 MVC 控制器,请在 Startup.cs 中将其注册为服务。

在应用程序启动过程中,通过依赖关系注入 注册服务(如 BloggingContext),以便能够通过构造函数的参数和属性向使用服务的组件(如 MVC 控制器)自动提供该服务。

  • 在 Startup.cs 中,添加以下 using 语句:

    using WebApplication.Models;
    using Microsoft.EntityFrameworkCore;
  • 将以下 手动高亮 的代码添加到 ConfigureServices 方法:

    public void ConfigureServices(IServiceCollection services)
    {
    services.Configure<CookiePolicyOptions>(options =>
    {
    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
    options.CheckConsentNeeded = context => true;
    options.MinimumSameSitePolicy = SameSiteMode.None;
    }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); var connection = @"Server=你的数据库地址;Database=WebApplication;User Id=你的数据库账号;Password=你的数据库密码;"; // 手动高亮
    services.AddDbContext<BloggingContext> // 手动高亮
    (options => options.UseSqlServer(connection)); // 手动高亮
    }

    生产应用通常会将连接字符串放在配置文件或环境变量中。 为简单起见,本教程在代码中定义它。

创建数据库

以下步骤使用迁移创建数据库。

  • “工具”>“NuGet 包管理器”>“包管理器控制台”

  • 运行以下命令:

    Add-Migration InitialCreate
    Update-Database

    如果收到错误,指出 The term 'add-migration' is not recognized as the name of a cmdlet,请关闭并重新打开 Visual Studio。

    Add-Migration 命令为迁移搭建基架,以便为模型创建一组初始表。 Update-Database 命令创建数据库并向其应用新的迁移。

创建控制器

生成 Blog 实体控制器和视图的基架。

  • 在“解决方案资源管理器”中,右键单击“Controllers”文件夹,然后选择“添加”>“控制器”。

  • 选择“视图使用 Entity Framework 的 MVC 控制器”,然后单击“添加”。

  • 将“模型类”设置为“Blog”,将“数据上下文类”设置为“BloggingContext”。

  • 单击 添加。

运行此应用程序

  • 调试 > 开始执行(不调试)
  • 导航到 /Blogs

Entity Framework Core(EF Core) 最简单的入门示例的更多相关文章

  1. .net core Entity Framework 与 EF Core

    重点讲 Entity Framework Core ! (一)Entity Framework 它是适用于.NET 的对象关系映射程序 (ORM),现在的EF6已经是久经沙场,并经历重重磨难,获得一致 ...

  2. .net core EF Core 视图的应用

    由之前的一篇文章<.net core Entity Framework 与 EF Core>我们都已经知道 EF Core 增加了许多特性,并且性能上也有了很大的提升. 但是EF Core ...

  3. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  4. asp.net core+ef core

    asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...

  5. Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF

    Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF Entity FrameWork的特点 1.支持多种数据库(MSSQL.Oracle.M ...

  6. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  7. .net core EF Core 调用存储过程

    在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程. 我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法: 1.F ...

  8. 在vs2015上使用asp.net core+ef core

    官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一下实现的效果

  9. .Net Core EF Core之Sqlite使用及部署

    1.添加引用Nuget包 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design Microsoft.Ent ...

随机推荐

  1. jforum(2)--中文乱码的解决方式

    安装好jforum后可能出现如下乱码页面: 解决方式 1.在建数据库时要用如下语句: CREATE DATABASE JForum DEFAULT CHARACTER SET utf8 COLLATE ...

  2. 您必须知道的 Git 分支开发规范

    Git 是目前最流行的源代码管理工具. 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 分支管理 分支命名 master 分支 master 为主分 ...

  3. Vue(四)组件

    组件的复用 这里的工程和上一节的一样 先建立一个组件 MyButton.vue <template> <button @click="count++">Yo ...

  4. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  5. git 本地项目推到远程仓库

    …or create a new repository on the command line echo "# blog" >> README.mdgit initgi ...

  6. 关于JSF

    JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准).它提供了一种以组件为中心的 ...

  7. 值得一学的webpack4

    初识webpack webpack是帮助我们管理复杂项目的工具. 学习webpack会极大扩充前端开发视野. webpack可以实现: Tree shaking 懒加载 代码分割 webpack4速度 ...

  8. idea 错误: 找不到或无法加载主类

    1.cmd进入项目目录 2.输入maven命令重构项目 mvn clean mvn idea:idea install

  9. Redux thunk中间件

    redux-thunk https://github.com/reduxjs/redux-thunk Why Do I Need This? Thunks are the recommended mi ...

  10. js 正则表达式,分组,非捕获或 环视的使用

    定位一个字符串中,匹配与定位重复字符中的最后一个字符: 例子: <script type="text/javascript"> var str="http:/ ...