Entity Framework Core系列之什么是Entity Framework Core
前言
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的更多相关文章
- ASP.NET CORE系列【六】Entity Framework Core 之数据迁移
原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...
- ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...
- Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)
本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...
- Entity Framework 学习系列(1) - 认识理解Entity Framework
目录 写在前面 什么是Entity Framework EF的优缺点 1.优点 2.缺点 如何理解ORM EF执行的原理 写在前面 在使用.net mvc 开发的时候.为了高效的开发,我们常常会搭配O ...
- ASP.NET Core系列(一): .NET Core简介及安装开发环境
大家都知道Java是跨平台的,.NET因为不具有跨平台的特性,被越来越多的开发者诟病,之前有各种间接的跨平台的方案,比如mono.但是由于各种兼容问题,最终 .NET Core出现了,它可以让程序在W ...
- Entity Framework Core系列之DbContext(删除)
上一篇我们介绍了Entity Framework Core系列之DbContext(修改),这一篇我们介绍下删除数据 修改实体的方法取决于context是否正在跟踪需要删除的实体. 下面的示例中con ...
- Entity Framework Core系列之DbContext(修改)
上一篇我们介绍了Entity Framework Core系列之DbContext(添加),这一篇我们介绍下修改数据 修改实体的方法取决于context是否正在跟踪需要修改的实体. 下面的示例中实体由 ...
- Entity Framework Core系列之DbContext(添加)
上一篇我们介绍了Entity Framework Core系列之DbContext,对DbContext有了概念上的了解,这篇将介绍DbContext添加数据 通过DbContext添加实体的主要方法 ...
- Entity Framework Core系列之DbContext
前言: EF Core DbContext表示与数据库的会话,并提供与数据库通信的API,具有以下功能: 数据库连接 数据操作,如查询和持久化 更改追踪 模型构建 数据映射 对象缓存 事务管理 数据库 ...
随机推荐
- ERP按序打印问题
按序打印只适合一个机器,不适合主副机模式,主副机模式请勾选同时打印 如果开启主副机模式勾选了按序打印,会造成副机下厨后厨不出单
- Scala高阶函数实践
高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数):另外一种是返回值是函数的函数.package sparkCore/** * Created by zhen on 2018/3 ...
- c/c++ vector,map,set,智能指针,综合运用的小例子
标准库,智能指针,综合运用的小例子 功能说明:查询单词在文件中出现的次数,如果在同一行出现多次,只算一次. 比如查询单词:你好 输出的结果: 你好 出现了:2次 (行号 2)xxxxxxx 你好 (行 ...
- 第10章 嵌入式Linux 的调试技术
10.1 打印内核调试信息:printk printk位函数运行在内核空间, printf函数运行在用户空间.也就是说,像Linux 驱动这样的Linux内核程序只能使用printk函数输出调试信息 ...
- centos7 Docker私有仓库搭建及删除镜像
如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17.09.0-ce 的centos7虚拟机 虚拟机一:192.16 ...
- 简述KVM架构和Xen架构
暑假最后一篇更新,因为,,,明天我就回学校了. 以下均为个人理解,如果有不对的地方还望各位dalao不吝赐教. 虚拟化 虚拟化是通过Hypervisor程序实现的,Hypervisor的作用是将硬件虚 ...
- Three.js基础学习【修改版】
一. Three.js官网及使用Three.js必备的三个条件 1.Three.js 官网 https://threejs.org/ 2.使用Three.js必备的三个条件(To actually b ...
- mysql 数据备份与数据导入到出
一.数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中小型数 ...
- LDAP概念
1.1.LDAP目录结构 此图为树形目录结构,我将此跳过去了,因为这个是按照“国家这种结构来划分的”.如果你喜欢这样看更好,如下还有一种: 树也可以根据互联网域名组主.这种命名方式正越来越受欢迎, ...
- 安装mysql5.6报错问题统计点
报错1(su进入mysql属组时报错): [root@dbserver ~]# su - mysql Last login: Thu Aug 31 17:20:03 CST 2017 on pts/1 ...