• 官方文档入口 https://docs.microsoft.com/zh-cn/ef/core/
  • Razor Pages with Entity Framework Core in ASP.NET Core https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-rp/intro?view=aspnetcore-2.2&tabs=visual-studio
  • Entity Framework Core 2.0 使用入门Demo https://github.com/stulzq/EntityFrameworkCore2Demo
  • Entity Framework Core 2.0 使用入门 http://www.cnblogs.com/stulzq/p/7717873.html
  • Entity Framework Core 2.0 新特性 http://www.cnblogs.com/stulzq/p/7366044.html
  • 一步步学习EF Core(1.DBFirst) https://www.cnblogs.com/GuZhenYin/p/6857413.html
  • Entity Framework Code First (一) https://www.cnblogs.com/panchunting/p/entity-framework-code-first-conventions.html
  • Contoso University https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-rp/intro?view=aspnetcore-2.2&tabs=visual-studio
  • IceDog.EFCore.Cmd.CodeFirst

    这是一个 EFCore Code First 的示例项目,详情在项目里面的readme里面
    配置连接字符串在 IceDog.EFCore\src\IceDog.EFCore.Cmd\Context\BloggingContext.cs

    IceDog.EFCore.Cmd.DBFirst

    这是一个 EFCore DB First 的示例项目,详情在项目里面的readme里面

    IceDog.EFCore.Cmd.OfficalDemo

    这个项目是微软官方的快速入门例子本人的练习,可供大家参考,详情在项目里面的readme里面。

    官方教程地址: https://docs.microsoft.com/zh-cn/ef/core/

    IceDog.EFCore.WebApiServer

    这是 EF Core 在 WebApi项目里面的应用,和一般项目不同就在于配置数据库连接不在Context里面,而是在

    IceDog.EFCore\src\IceDog.EFCore.WebApiServer\Startup.cs 里面的 ConfigureServices 里面

    详情在项目里面的readme里面

    IceDog.EFCore.ContosoUniversity

    此项目是实现如下文档的内容,教程看官方的即可

    ASP.NET Core Razor 页面和 EF Core - 教程系列
    https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-rp/?view=aspnetcore-2.2

    参考代码 https://github.com/aspnet/Docs/tree/master/aspnetcore/data/ef-rp/intro/samples

    详情在项目里面的readme里面

    常用的EF Core驱动

    以下驱动都可以在nuget找到,MySql/MariaDB 推荐使用Pomelo EF Core组件,因为官方的目前可能存在bug,Pomelo EF Core同样是微软官方所推荐的。

    官方推荐列表地址: https://docs.microsoft.com/zh-cn/ef/core/providers/index

  • SqlServer :Microsoft.EntityFrameworkCore.SqlServer
  • MySql :Pomelo.EntityFrameworkCore.MySql
  • Oracle :Oracle.ManagedDataAccess.Core Citms.EntityFrameworkCore.Oracle
  • SqlLite :Microsoft.EntityFrameworkCore.Sqlite
  • EF相关指令

    添加迁移合并版本

    Add-Migration v1.0.0 -o Migrations
    Add-Migration v1.0.1 -o Migrations
    

    进入项目文件夹里面执行(含有.csproj文件的目录)

    dotnet ef migrations add v1.0.0
    dotnet ef migrations add -p "ConsoleApp.SQLite.csproj"#和上面等效
    dotnet ef migrations add --project "ConsoleApp.SQLite.csproj"#和上面等效
    dotnet ef migrations add -s "ConsoleApp.SQLite.csproj"#和上面等效
    dotnet ef migrations add --startup-project "ConsoleApp.SQLite.csproj"#和上面等效
    
    Remove-Migration
    
    dotnet ef migrations remove
    

    显示迁移版本列表

    dotnet ef migrations list
    

    更新数据库

    Update-Database
    
    dotnet ef database update
    
    Drop-Database
    
    dotnet ef database drop
    

    如果上述指令出现不能用的情况,在程序包管理器控制台输入如下命令

    Import-Module C:\Users\Administrator\.nuget\packages\microsoft.entityframeworkcore.tools\2.1.0\tools\EntityFrameworkCore.psd1
    

    如果执行上述命令出现 Build failed.

    原因是解决方案里面有多种类型的应用程序,只留一种类型,其他的给卸载掉即可,如一个项目里面包含一个控制台项目和webapi项目,就算是设置了控制台为启动项目,但是启动的时候还是会启动Web项目,导致构建失败。

    1.执行Add-Migration init报错 Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。如何解决?

    1、 编译项目。首次在项目中添加EF Core后,这一步必须做,否则都找不到后续要导入的 EntityFrameworkCore.psd1 模块。

    2、找到前述文件的位置,使用Import-Module命令导入。我这里为:

    Import-Module C:\Users\Administrator\.nuget\packages\microsoft.entityframeworkcore.tools\2.1.0\tools\EntityFrameworkCore.psd1
    

    执行信息如下:

    模块“EntityFrameworkCore”中的某些导入命令的名称包含未批准的动词,这些动词可能导致这些命令名不易被发现。若要查找具有未批准的动词的命令,请使用 Verbose 参数再次运行 Import-Module 命令。有关批准的动词列表,请键入 Get-Verb。

    之后就可以正常使用命令了。

    2.执行 Add-MigrationUpdate-Database出现 build failed 怎么办?

    https://stackoverflow.com/questions/44785540/ef-core-add-migration-build-failed

    原因是解决方案里面有多种类型的应用程序(项目里面包含Migrations),只留一种类型,其他的给卸载掉即可,如一个项目里面包含一个控制台项目和webapi项目,
    就算是设置了控制台为启动项目,但是启动的时候还是会启动Web项目,导致构建失败。

    当然,没有失败也不要纠结为啥了,没有失败更好

    3.使用sqllite的时候,vs调试提示表不存在怎么办?

    要从 Visual Studio 运行此示例,必须手动将工作目录设置为项目的根目录。 如果未设置工作目录,则会引发以下 Microsoft.Data.Sqlite.SqliteExceptionSQLite Error 1: 'no such table: Blogs'

    设置工作目录:

  • 在“解决方案资源管理器”中,右键单击该项目,然后选择“属性”。
  • 在左窗格中选择“调试”选项卡。
  • 将工作目录设置为项目目录。
  • 保存更改。
  • 链接:https://docs.microsoft.com/zh-cn/ef/core/get-started/netcore/new-db-sqlite#vs

    由于测试使用的是 mysql ,因此还需引入 Pomelo.EntityFrameworkCore.MySql v2.1.2

    实际上对于控制台项目,需要引入nuget包,Microsoft.EntityFrameworkCore.Design,此时引入的版本是v2.1.4.

    对于Web项目,则需要安装 Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Relational,此时安装的版本都是v2.1.4。

    不然执行下面的Entity Framework Core Tools命令会报错,提示缺失上面的依赖库。

    学习文档地址:https://gitee.com/dhclly/icedog.script.test/tree/master/doc/dot-net/dot-net-core/entity-framework-core

    生活,有时候就是很简单,有时候却很要命。