前言

Entity Framework Core (EF Core)是微软推荐的基于.NET Core framework的应用程序数据访问技术。它是轻量级,可扩展并且支持跨平台开发。EF Core是一种对象关系映射器(ORM)。通过应用程序实体对象和关系数据库中的数据的映射,使得开发人员能够以面向对象的方式处理数据。

为什么使用ORM

大多数开发框架都包含库,这些库允许通过类似记录集的数据结构访问关系数据库中的数据。下面的代码示例演示了一个典型的场景,即数据从数据库中检索并存储在ADO.NET DataTable中,以便程序的代码可以访问该数据:

 using (var conn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand("select * from Products", conn))
{
var dt = new DataTable();
using (var da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
}

DataTable中的数据可以通过数字或字符串索引器访问将对象转换为正确的类型:

foreach(DataRow row in dt.Rows)
{
int productId = Convert.ToInt32(row[]);
string productName = row["ProductName"].ToString();
}

这种后绑定或“弱类型”的数据访问方法很容易出错。经常会出现错误的输入列的名称,或者发现列名在数据库中已经被更改了,或者更改SQL语句中指定字段的顺序,而没有对应用程序代码进行相应的更改等问题,最后数据类型转换失败,代码仍然可以编译,但在运行时会出错。因此,专业开发人员更喜欢以强类型的方式处理数据。

强类型:

当您对数据采用强类型方法时,您将使用预定义类的属性,这些类以面向对象的方式形成模型(Model会在后续章节中专门做说明):

 public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
}
 Product myProduct = new Product();
int productId = myProduct.ProductId;
string productName = myProduct.ProductName;

要从数据库中检索数据并将其映射到域对象的实例,还需要做一些工作。一种选择是编写自己的代码来管理它,然而随着模型的增长,代码量会越来越大,意味着我们将需要越来越多的开发时间去维护。这将增加完成项目的总时间。

ORM是预先编写的代码库,功能齐全的ORM可以做很多事情:

  • 将Model映射到数据库对象
  • 创建数据库并且维护它的模式保持和Model一致
  • 生成SQL并执行
  • 管理事务
  • 跟踪已经检索的对象

如何获取Entity Framework Core

EF CORE是 Nuget 包,可以根据项目类型和可用的工具以多种方式添加到项目中:下面介绍3中方式Visual Studio包管理器,包管理器控制台(Package Manager Console),命令行工具(Command Line Tools)

Visual Studio包管理器:

Visual Studio的用户可以通过包管理工具选项之一安装 EF CORE,而不用管其项目类型(.NET Core or the full .NET Framework),NuGet包管理器界面或包管理器控制台。

NuGet包管理器(Nuget Package Manager)

1.打开Visual Studio>> Tools >> NuGet Package Manager >> Manage NuGet Packages For Solution

2.选中"浏览(Browse)",并在搜索框中键入“entityframeworkcore”。

3.选中要安装的程序,这里选择SQL SERVER

4.选择你想要安装EF CORE的项目,然后点击安装(Install)

5.查看即将对项目进行的更改(除非您之前已经勾选了框以防止出现此对话框)

6.最后,接受与将要安装的包相关联的各种许可证的条款

包管理器控制台(Package Manager Console)

1.打开Visual Studio>> Tools >> NuGet Package Manager >> Package Manager Console

2.确保在“默认项目(Default project)”下拉菜单中选择正确的项目,并键入install-package microsoft.entityframeworkcore.sqlserver来安装SQL服务器提供程序,点击回车键安装即可

命令行工具(Command Line Tools)

首先创建一个项目,命令行到 包含.csproj (或者 project.json)的文件夹之后,执行命令dotnet add package Microsoft.EntityFrameworkCore.SqlServer也可安装EF CORE,假设我新建的项目在E盘的文件夹下:

如果你想用EF Core工具去迁移或者搭建,还需要执行以下命令

dotnet add package Microsoft.EntityFrameworkCore.Tools --version 1.1.0-msbuild3-final 

原文链接:https://www.learnentityframeworkcore.com/efcore/how-to-get

Entity Framework Core系列之什么是Entity Framework Core的更多相关文章

  1. ASP.NET CORE系列【六】Entity Framework Core 之数据迁移

    原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...

  2. ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移

    前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...

  3. Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)

    本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...

  4. Entity Framework 学习系列(1) - 认识理解Entity Framework

    目录 写在前面 什么是Entity Framework EF的优缺点 1.优点 2.缺点 如何理解ORM EF执行的原理 写在前面 在使用.net mvc 开发的时候.为了高效的开发,我们常常会搭配O ...

  5. ASP.NET Core系列(一): .NET Core简介及安装开发环境

    大家都知道Java是跨平台的,.NET因为不具有跨平台的特性,被越来越多的开发者诟病,之前有各种间接的跨平台的方案,比如mono.但是由于各种兼容问题,最终 .NET Core出现了,它可以让程序在W ...

  6. Entity Framework Core系列之DbContext(删除)

    上一篇我们介绍了Entity Framework Core系列之DbContext(修改),这一篇我们介绍下删除数据 修改实体的方法取决于context是否正在跟踪需要删除的实体. 下面的示例中con ...

  7. Entity Framework Core系列之DbContext(修改)

    上一篇我们介绍了Entity Framework Core系列之DbContext(添加),这一篇我们介绍下修改数据 修改实体的方法取决于context是否正在跟踪需要修改的实体. 下面的示例中实体由 ...

  8. Entity Framework Core系列之DbContext(添加)

    上一篇我们介绍了Entity Framework Core系列之DbContext,对DbContext有了概念上的了解,这篇将介绍DbContext添加数据 通过DbContext添加实体的主要方法 ...

  9. Entity Framework Core系列之DbContext

    前言: EF Core DbContext表示与数据库的会话,并提供与数据库通信的API,具有以下功能: 数据库连接 数据操作,如查询和持久化 更改追踪 模型构建 数据映射 对象缓存 事务管理 数据库 ...

随机推荐

  1. SQL Server Replication的分发服务器的快照文件夹位置查找

    SQL Server分发服务器配置中,需要配置快照文件夹(Snapshot Folder),用于存储发布的数据和架构文件的工作目录,那么如何查找当前SQL Server数据库服务器的分发服务器的快照文 ...

  2. 洗礼灵魂,修炼python(88)-- 知识拾遗篇 —— 线程(2)/多线程爬虫

    线程(下) 7.同步锁 这个例子很经典,实话说,这个例子我是直接照搬前辈的,并不是原创,不过真的也很有意思,请看: #!usr/bin/env python #-*- coding:utf-8 -*- ...

  3. python连接sqlserver数据库

    1.准备工作 python3.6连接sqlserver数据库需要引入pymssql模块 pymssql官方:https://pypi.org/project/pymssql/ 没有安装的话需要: pi ...

  4. cURL模拟POST提交数据

    首先,是这个代码: <?php //curl模拟post提交数据$url = "http://127.0.0.1/immoc/output.php";$post_data = ...

  5. Docker: docker image常用命令实战

    #docker列出镜像[root@192 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 881bd08c0b08 ...

  6. Yahoo团队网站性能优化的35条黄金守则

    转载 Excetional Performance 团队总结出了一系列可以提高网站速度的方法.可以分为 7大类 35条.包括内容 .服务器 . CSS . JavaScript .Cookie .图片 ...

  7. CSAPP:第八章 异常控制流1

    CSAPP:第八章 异常控制流1 关键点:异常 8.1 异常8.2 进程   现代系统通过使控制流发生突变来对这些情况做出反应,一般而言,我们把这些突变称为异常控制流(Exceptional Cont ...

  8. Springboot 实现api校验和登录验证

    https://blog.csdn.net/qq_36085004/article/details/83348144 文章目录 API校验 场景 实现思路 代码 拦截器: 拦截器注册: 登录token ...

  9. 【转】ffmpeg常用基本命令

    [FFmpeg]FFmpeg常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpe ...

  10. [LeetCode]最大系列(最大正方形221,最大加号标志764)

    221. 最大正方形 题目描述: 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 ...