关键词:
工具与环境介绍
1.开发环境为vs 2015
2.mysql EF Core支持采用 Pomelo.EntityFrameworkCore.MySql 源代码地址(https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql)
场景
设计两张表 用户表(user)和发帖表(user)
一个用户对应多个用户
Coding Begin
1.新建项目(新建一个空console项目)
2.添加Nuget.config
增加两个feed,一个是Pomelo(mysql ef core的支持),一个是nuget
代码如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Pomelo" value="https://www.myget.org/F/pomelo/api/v3/index.json" /> <add key="nuget.org" value="https://www.nuget.org/api/v2" /> </packageSources> </configuration>
3.在project.json中增加ef core的依赖,同时增加EF Tool(用于数据库的迁移)
{ "version": "1.0.0-*", "buildOptions": { "emitEntryPoint": true }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" }, "Pomelo.EntityFrameworkCore.MySql": "1.0.0", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" }, "tools": { "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }
4.增加User,Post实体 和DB数据库上下文文件
代码分别如下:
public class User { public int Id { set; get; } public string UserName { set; get; } public string Password { set; get; } } public class Post { public int Id { set; get; } public string Title { set; get; } public string Description { set; get; } public DateTime CreatedDate { set; get; } public int UserId { set; get; } } public class DB : DbContext { public DbSet<User> Users { set; get; } public DbSet<Post> Posts { set; get; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseMySql(@"Server=localhost;database=migrationtest;uid=root;pwd=Password12!;"); }
5.通过Migration生成数据库
在vs中的“程序包管理器控制台”中输入如下两个命令
Add-Migration init(执行此命令项目生成一个目录(Migration))
Update-Database init
执行之前
执行Add-Migration init(生成Migration文件夹)
执行 Update-Database init
执行命令之后,数据库生成
Post表
6.往数据库插入数据
7.修改实体字段,在post实体中增加一个字段和修改一个字段的名字
修改之后的post如下
public class Post { public int Id { set; get; } public string Title { set; get; } public string Hint { set; get; } public DateTime CreatedDate { set; get; } public int UserId { set; get; } public string Remark { set; get; } }
8.执行迁移的命令
Add-Migration updatedb
Update-Database updatedb
执行迁移之后的post表
efcore迁移
...删除A,将快照恢复成B,结束-----------------Update-Database1、数据库__EFMigrationsHistory中MigrationId字段和迁移文件做对比2、更新所有新于MigrationId字段的迁移3、更新后的迁移不可Remove4、如果要Remove已经更新的数据库操作,可以使用Update... 查看详情
Entity Framework Core 2.0 Add-Migration 不会创建任何迁移文件
】EntityFrameworkCore2.0Add-Migration不会创建任何迁移文件【英文标题】:EntityFrameworkCore2.0Add-Migrationdoesn\'tcreateanymigrationfiles【发布时间】:2018-02-0117:21:16【问题描述】:最近从EFCore1.0迁移到EFCore2.0,运行良好。今天我添加了一个新表... 查看详情
EF Core 迁移错误:PositionalParameterNotFound,Add-Migration
】EFCore迁移错误:PositionalParameterNotFound,Add-Migration【英文标题】:EFCoremigrationerror:PositionalParameterNotFound,Add-Migration【发布时间】:2021-12-2906:46:25【问题描述】:我正在使用EntityFrameWork当我尝试运行命令添加迁移时,我收到以下错... 查看详情
在应用所有 EF Core 迁移后运行代码
】在应用所有EFCore迁移后运行代码【英文标题】:RuncodeafterallEFCoremigrationsareapplied【发布时间】:2022-01-1515:06:43【问题描述】:EFCore5有各种events,但它们与DbContext相关。没有与迁移相关的事件(Migration)。我想在应用所有迁移后运... 查看详情
[efcore]数据迁移
摘要在实际项目中,大多都需要对业务逻辑以及操作数据库的逻辑进行分成操作,这个时候该如何进行数据的迁移呢?步骤上篇文章:EFCore数据迁移操作比如,我们将数据上下文放在了Data层。看一下BlogContext内容如下:publicclassB... 查看详情
使用entityframeworkcore时,通过代码自动migration
...模型有变动,我们要在用EFCore提供的命令行工具进行手工迁移,然后再运行程序。但是为了效率,我想能不能在程序的入口处进行Migration呢?从个人经验来说应该是可以,因为EFTool虽然提供了CLI但是它最终也是被程序解析这 查看详情
django迁移脚本
...了什么事情?1.将相关的迁移脚本翻译成sql语句,然后在数据库中执行2.如果sql语句执行没有问题,那么会将相关的迁移脚本的名字记录到数据库中django_migrations表中migrate怎么判断哪些迁移脚本需要执行?migrate会将代码中的迁移... 查看详情
migrations有两个文件迁移数据的方法
不分开迁移报错如下;解决方案1迁移Migration/nfoManageEntityFramework\\Enable-Migrations-ContextTypeNameInfoModel.Context.InfoManageContext-MigrationsDirectory:Migrations\\InfoManageEntityFramework\\add-migration-Confi 查看详情
efcore数据迁移
PackageReference是nuget包 DotNetCliToolReference 是dotnet 命令行工具 EFCore用到<DotNetCliToolReference Include=“Microsoft.EntityFrameworkCore.Tools.DotNet” Version=“1.0.0” 查看详情
使用entityframeworkcore时,通过代码自动进行migration
...模型有变动,我们要在用EFCore提供的命令行工具进行手工迁移,然后再运行程序。但是为了效率,我想能不能在程序的入口处进行Migration呢?从个人经验来说应该是可以,因为EFTool虽然提供了CLI但是它最终也是被程序解析这些命... 查看详情
flask-migrate数据库迁移(代码片段)
数据库迁移在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。 创... 查看详情
django迁移问题
...判断哪些迁移脚本需要执行:他会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本进行对比,如果发现数据库中,没有这个迁移脚本,那么就会执行这个迁移脚本。面试题2:migrate做了什么事情:将相关的迁移脚本翻... 查看详情
使用 rake db:migrate 迁移数据不会改变它
】使用rakedb:migrate迁移数据不会改变它【英文标题】:Migratingdatawithrakedb:migratedoesnotchangeit【发布时间】:2014-06-2006:40:44【问题描述】:我正在为rails和db:migrate苦苦挣扎。我使用此代码进行了迁移classSetDefaultInstallmentsForLicenses<Act... 查看详情
简单分析flask数据库迁移详情
参考技术A1、使用Flask-Migrate实现数据库迁移db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,但是这样的话,原来表中的数据就都被删除了,这肯定是... 查看详情
98.orm迁移详解,makemigrations,migrate
...文件中写迁移脚本。2.migrate:将生成的迁移脚本。映射到数据库中。创建新的表或者修改表的结构,以下是一些常用的选项:app_label:将某个app的迁移脚本映射到数据库中,如果没有指定,那么会将在所有的安装在INSTALLED_APPS中的... 查看详情
flask学习-15.flask-migrate数据迁移(代码片段)
前言Flask-SQLAlchemyORM可以直接操作数据库,可以用db.create_all()代码同步表到数据库。当我们需要修改表的字段,比如对表新增字段,修改字段的时候需用到flask-migrate插件来同步迁移数据。flask-migrate迁移数据django框架里... 查看详情
artisan migrate 命令不迁移,不产生输出
...述】:我正在做我的第一个Laravel项目。我正在尝试创建数据库迁移并使用artisanmigrate运行它们。迁移未运行,并且该命令不返回任何输出。关键事实:我使用artisanmake:migration创 查看详情
efcore开发模式之codefirst
...相关的实体类及DbContext派生类,然后通过映射关系自动在数据库中完成数据库表的创建。 本例中创建一个班级和学生的管理,主要有班级类MyClass和学生类Student。其中班级类MyClass中可包含多名学生Student,两者之间是一对多... 查看详情