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,具有以下功能: 数据库连接 数据操作,如查询和持久化 更改追踪 模型构建 数据映射 对象缓存 事务管理 数据库 ...
随机推荐
- c/c++ 标准库 pair 介绍
标准库 pair 介绍 问题:map里的元素由key和value组成,这个key和value的组合是什么类型呢??? 答案:pair类型 pair介绍: 它是模板 有2个公有成员可供访问. first ...
- NSMutableArray 增删操作测试
NSMutableArray *testArray = [NSMutableArray array]; [testArray addObject:"]; [testArray addObje ...
- 将含有makefile文件的源码加入Eclipse工程
转载自https://www.linuxidc.com/Linux/2011-02/32763.htm 很多软件在开发或者分析时需要一个像样的IDE,Eclipse是其中很优秀的一个,至少个人感觉很好 ...
- 简单的bfs
这里主要是写的一个简单的bfs,实例运行了RMAT10无向图,总共有1024个顶点.这种简单的bfs算法存在很明显的缺陷,那就是如果图数据过大,那么进程将会直接被系统杀死. 代码如下: #includ ...
- 爬楼梯的golang实现
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 输入: 输出: 解释: 有两种方法可以爬到楼顶. ...
- 【Linux基础】文件处理实例
1.文件拆分 //每4000行拆分一个文件 epms_t_ep_fx_stl_xy_20190129.dat 2.行处理 //查找第二列为711611且第三列为711100记录,打印行号和整行数据 a ...
- deeplearn.js
http://blog.csdn.net/rongxiang111/article/details/78083867 <!DOCTYPE html> <html> <he ...
- C. Magic Ship cf 二分
C. Magic Ship time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- C - 继续畅通工程 最小生成树
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经 ...
- linux学习笔记整理(六)
第七章 Centos7-文件权限管理本节所讲内容:7.1文件的基本权限:r w x (UGO)7.2文件的特殊权限:suid sgid sticky和文件扩展权限ACL7.3实战:创建一个让root都 ...