001 Entity Framework Core 2.x P1

001 Entity Framework Core 2.x P1

EF Core

  • 概述:

    • Entity Framework Core 简介
    • 创建Model
    • 与数据库交互
    • 关系数据
    • ASP.NET Core中的应用

EF Core 是什么?

EF Core是微软官方开发的一款ORM框架.

EFCore原理

EF Core 相对于其他ORM的优势在于可以大大的提高生产力,并且,由于是微软自己的产品,所以和.Net Core的结合也会非常的好,可以提供开发者的工作效率,但是相应的, EFCore 的性能也会相对的要差于 .Net 世界的一些其它主流ORM框架,比如 Dapper,SqlSugar等.

为什么使用EFCore

  • 生产力
  • 支持很多数据库
  • 可以使用Linq
  • 注重领域[Domain],而不是数据库

EFCore 2.x支持的平台框架

  • .Net Core 2.x
  • .Net 4.6.1+
  • UWP
  • Xamarin 等

安装EFCore

我们需要再Nuget包管理其中搜索一下安装包即可.

Microsoft.EntityFrameworkCore

安装界面

值得注意的是Microsoft.EntityFrameworkCore只是提供了,基本的EFCore的操作类,如果我们需要操作具体的数据库,那么我们还需要安装操作指定的数据的Providers开发包,下面我们以SqlServer数据库为例,所以我们需要再安装支持SqlServer的EFCore开发包,在Nuget中搜索以下信息即可.

Microsoft.EntityFrameworkCore.SqlServer

安装界面

查看本机SqlServer 实例的 cmd命令

Sqllocaldb info

查询结果

EFCore 迁移

  • 创建/删除 Domain Model
  • 创建迁移文件
  • 应用迁移到数据库,获取生成SQL脚本

迁移用的库

如果我们想要在Vs中依赖EFCore使用迁移命令,将Model代码映射到数据库中,我们还需要再Vs中安装一个依赖包.

Microsoft.EntityFrameworkCore.Tools

  • Microsoft.EntityFrameworkCore.Tools :用来执行PowerShell命令
  • Microsoft.EntityFrameworkCofe.Desion :是一个迁移引擎

依赖关系

  • 需要一个可执行的项目
  • 必须在启动项目里

安装页面

安装完成之后,我们就可以在Vs的包管理控制台中,输入迁移命令,将项目中的Model,迁移至数据库中,生成表,以及表数据,在包管理控制器中,实际上我们可以执行PowerShell的相关命令.

我们需要选择DbContext所在的项目.

我们现在可以在包管理控制台中,查看EFCore相关的命令,我们数据一下命令来进行查看.

get-help entityframeworkcore

查询的结果

命令解释:

Add-Migration 如果创建了Model,或者已创建的Model发生了改变,那么此命令执行就会生成一些sql语句,这些sql语句执行之后,那么数据库中表结果,就会根据model,进行匹配,并且一同演进. (只是生成sql语句,这个sql语句并没有执行.)

Update-Database 等于是在Add-Migration命令的基础上,将生成好的sql执行到数据库中,达到数据库和Model同步的目的.

现在我们进行迁移,此处需要注意的是在进行迁移之前,我们需要将DbContext所在的项目设置为启动项,否则在之前Add-Migration命令的时候会报错,如下图:

命令执行报错

我们修改启动项之后再执行Add-Migration命令:

命令执行成功

这个时候,在EFCore.Data项目中会自动创建一个Migrations文件夹,并生成,此次迁移要使用到的变化(类似于一个快照)即,迁移文件.

迁移文件

我们可以根据此次生成的迁移文件,根据 Script-Migration 命令 生成需要迁移的sql脚本.

命令执行成功

成功生成了迁移相关的sql语句

在开发的时候,我们可以使用Upate-Database命令来直接生成数据库,如果我们想看执行的明细,我们可以在Update-Database 命令后面跟一个 -verbose参数,即Update-Database -verbose

命令执行成功

此时生成的数据库文件在当前计算机的当前用户的目录下,我的电脑是

C:\Users\ZYJNO

数据库文件

我们通过数据库对象管理器,就可以看到我们所创建的数据库了.

数据库对象管理器

原文地址:https://www.cnblogs.com/HelloZyjS/p/12685793.html

时间: 2024-11-11 19:58:18

001 Entity Framework Core 2.x P1的相关文章

使用Entity Framework Core需要注意的一个全表查询问题

.NET Core 迁移工作如火如荼,今天在使用 Entity Frameowork Core(又名EF Core)时写了下面这样的 LINQ 查询表达式: .Where(u => u.Id == new Guid(userId)).FirstOrDefaultAsync(); 结果在 SQL Server Profiler 中发现竟然进行了全表查询. 之后将 new Guid(userId) 从表达式中移出,保存于一个局部变量中,使用这个局部变量进行查询,全表查询问题就解决了. var use

UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软推荐使用Sqlite吧! 2,简单!就只有一个类库没有多余的参照什么的.不像其他数据库还得做复杂配置什么的麻烦! 3,不需要数据库服务,数据服务和客户都在同一个进程里面.如下图: 4,作为存储系统它只支持一个用户一个数据实体. 5,跨平台跨结构,这个好! Sqlite主要使用内容 如果想充分使用好S

被Entity Framework Core的细节改进震撼了一下

今天用 SQL Server Profiler 查看 Entity Framework Core 生成的 SQL 语句时,突然发现一个细节改进,并且被它震撼了一下: exec sp_executesql N'SELECT [u].[UserId] FROM [Users] AS [u] WHERE [u].[LoginName] = @__loginName_0',N'@__loginName_0 nvarchar(128)',@__loginName_0=N'test' 震撼之处就是这个 u(

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)

前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Entity Framework Core(Entity Framework 7)下文将简称:EF 1.在UWP中使用EF需要更新Microsoft.NETCore.UniversalWindowsPlatform到大于“5.2.2”的版本. 2.直接在“程序包管理器控制台”输入命令来更新:Update-P

使用Entity Framework Core Code First创建SQLite数据库

Entity Framework Core(以下简称"EF Core")支持多种数据库.在这篇文章中,我们看看如何使用EF Core的Code First方式创建SQLite数据库 下载SQLite,解压后会得到三个文件,放到c:\sqlite目录下 我们先创建一个.NET Core控制台程序 添加EF Core for SQLite组件库 "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite&qu

全球首发免费的MySql for Entity Framework Core

from:http://www.1234.sh/post/pomelo-data-mysql?utm_source=tuicool&utm_medium=referral Source 源代码在GitHub中以MIT协议开源: Pomelo.Data.MySql Pomelo.EntityFrameworkCore.MySql Background 一时兴起,想实现.NET Core下的MySQL ADO层和与Entity Framework Core对接,同时也是非常鄙视某厂商借着目前Orac

Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core

本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core ----------------------------------------------------------------------- What's In This Chapter? Introducing Entity Framework Core 1.0 Using Depe

Entity Framework Core的贴心:优雅处理带默认值的数据库字段

对于用于保存记录添加时间的数据库日期字段,我们通常会设置一个 GETDATE() 的默认值,而不是在应用程序的代码中获取当前时间进行保存,这样可以避免由于web服务器时钟不同步引起的时间偏差. Entity Framework Core 在设计时贴心地考虑到这个场景,提供了 .HasDefaultValueSql() 映射配置,今天在实际开发中体检了一下,的确管用. 比如下面的数据库表中 DateAdded 与 IsActive 这2个字段分别设置了默认值: CREATE TABLE [dbo]