EF6 CodeFirst代码迁移笔记
迁移
- Add-Migration 将基于您已经对模型所做的更改构建下一次迁移的框架。
- Update-Database 将所有挂起的更改应用到数据库。
删除数据库
回溯数据库
命令异常:
关于迁移到MYSql的问题
此操作要求连接到“master”数据库。无法创建与“master”数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接。
The underlying provider does not support the type 'nvarchar(max)'.
这个也是项目的配置或dll有问题,排查一遍配置,然后清理,迁移
System.IO.FileLoadException: 未能加载文件或程序集“MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖项。
这个是mysql.entity依赖项目MySql.Data类型不匹配,当初我手贱把MySql.data升级到最新版6.9就会这样,但实际上他的依赖项目不支持。但是显示的时候,nuget依赖项只会要求最低版本限制而没有最高版本限制,所以生成没问题,运行的时候报错,解决方案:
Install-Package MySql.Data -Version 6.8.3
未找到用于反序列化“MySql.Data.Types.MySqlConversionException”类型的对象的构造函数。
Allow Zero Datetime=true
第二种我没试过.还有,我列举的这种异常出现的原因具有特殊性,不具有代表性.
更改表主键的时候,提示表不存在
支持“XXXX”上下文的模型已在数据库创建后发生更改
这是因为刚才我们没有迁移成功.这时候,把刚才迁移的那个DbMigration类的up和down方法全注释掉,然后Update-Database –Verbose 就可以了.verbose可免.
参考链接:
Entity Framework 6 中 Code First 的好处
Code First Migrations: Making __MigrationHistory not a system table
如何让EF在创建数据库时不生成__MigrationHistory表
解决C#获取SQL的timestamp类型到程序中为byte[]类型的问题
附录:nuget关于code first 迁移命令的帮助
名称 |
Enable-Migrations
|
摘要 |
Enables Code First Migrations in a project.
|
语法 |
Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-MigrationsDirectory <String>] [-ProjectName <String>] [-StartUpProjectName <String>] [-ContextProjectName <String>] [-ConnectionStringName <String>] [-Force] [-ContextA
ssemblyName <String>] [-AppDomainBaseDirectory <String>] [<CommonParameters>] Enable-Migrations [-ContextTypeName <String>] [-EnableAutomaticMigrations] [-MigrationsDirectory <String>] [-ProjectName <String>] [-StartUpProjectName <String>] [-ContextProjectName <String>] -ConnectionString <String> -ConnectionProviderName < |
说明 |
Enables Migrations by scaffolding a migrations configuration class in the project. If the
target database was created by an initializer, an initial migration will be created (unless automatic migrations are enabled via the EnableAutomaticMigrations parameter). |
参数 |
-ContextTypeName <String>
Specifies the context to use. If omitted, migrations will attempt to locate a single context type in the target project. 是否必需? False -EnableAutomaticMigrations [<SwitchParameter>] 是否必需? False -MigrationsDirectory <String> 是否必需? False -ProjectName <String> 是否必需? False -StartUpProjectName <String> 是否必需? False -ContextProjectName <String> 是否必需? False -ConnectionStringName <String> 是否必需? False -ConnectionString <String> 是否必需? True -ConnectionProviderName <String> 是否必需? True -Force [<SwitchParameter>] 是否必需? False -ContextAssemblyName <String> 是否必需? False -AppDomainBaseDirectory <String> 是否必需? False <CommonParameters> |
示例 1 |
C:\PS>Enable-Migrations
# Scaffold a migrations configuration in a project with only one context |
示例 2 |
C:\PS>Enable-Migrations -Auto
# Scaffold a migrations configuration with automatic migrations enabled for a project |
示例 3 |
C:\PS>Enable-Migrations -ContextTypeName MyContext -MigrationsDirectory DirectoryName
# Scaffold a migrations configuration for a project with multiple contexts |
备注 |
备注
若要查看示例,请键入: "get-help Enable-Migrations -examples". 有关详细信息,请键入: "get-help Enable-Migrations -detailed". 若要获取技术信息,请键入: "get-help Enable-Migrations -full". |
名称 |
Add-Migration
|
摘要 |
Scaffolds a migration script for any pending model changes.
|
语法 |
Add-Migration [-Name] <String> [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [-IgnoreChanges] [-AppDomainBaseDirectory <String>] [<CommonParameters>]
Add-Migration [-Name] <String> [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] -ConnectionString <String> -ConnectionProviderName <String> [-IgnoreChanges] [-AppDomainBaseDirectory <String>] [<CommonParamet |
说明 |
Scaffolds a new migration script and adds it to the project.
|
参数 |
-Name <String> Specifies the name of the custom script. 是否必需? True -Force [<SwitchParameter>] 是否必需? False -ProjectName <String> 是否必需? False -StartUpProjectName <String> 是否必需? False -ConfigurationTypeName <String> 是否必需? False -ConnectionStringName <String> 是否必需? False -ConnectionString <String> 是否必需? True -ConnectionProviderName <String> 是否必需? True -IgnoreChanges [<SwitchParameter>] 是否必需? False -AppDomainBaseDirectory <String> 是否必需? False <CommonParameters> |
示例 1 |
C:\PS>Add-Migration First
# Scaffold a new migration named "First"
|
示例 2 |
C:\PS>Add-Migration First -IgnoreChanges
# Scaffold an empty migration ignoring any pending changes detected in the current model.
# This can be used to create an initial, empty migration to enable Migrations for an existing
# database. N.B. Doing this assumes that the target database schema is compatible with the
# current model.
|
示例 3 |
|
备注 |
若要查看示例,请键入: "get-help Add-Migration -examples".
有关详细信息,请键入: "get-help Add-Migration -detailed".
若要获取技术信息,请键入: "get-help Add-Migration -full".
|
名称 |
Update-Database
|
摘要 |
Applies any pending migrations to the database.
|
语法 |
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [-AppDomainBaseDirectory <String>] [<Common
Parameters>]
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] -ConnectionString <String> -ConnectionProviderName <String> [-AppDomainBaseD
irectory <String>] [<CommonParameters>]
|
说明 |
Updates the database to the current model by applying pending migrations.
|
参数 |
-SourceMigration <String> Only valid with -Script. Specifies the name of a particular migration to use as the update's starting point. If omitted, the last applied migration in the database will be used. 是否必需? False -TargetMigration <String> 是否必需? False -Script [<SwitchParameter>] 是否必需? False -Force [<SwitchParameter>] 是否必需? False -ProjectName <String> 是否必需? False -StartUpProjectName <String> 是否必需? False -ConfigurationTypeName <String> 是否必需? False -ConnectionStringName <String> 是否必需? False -ConnectionString <String> 是否必需? True -ConnectionProviderName <String> 是否必需? True -AppDomainBaseDirectory <String> 是否必需? False <CommonParameters> |
示例 1 |
C:\PS>Update-Database
# Update the database to the latest migration
|
示例 2 |
C:\PS>Update-Database -TargetMigration Second
# Update database to a migration named "Second"
# This will apply migrations if the target hasn't been applied or roll back migrations
# if it has
|
示例 3 |
C:\PS>Update-Database -Script
# Generate a script to update the database from it's current state to the latest migration
|
示例4 |
C:\PS>Update-Database -Script -SourceMigration Second -TargetMigration First
# Generate a script to migrate the database from a specified start migration
# named "Second" to a specified target migration named "First"
|
示例5 |
C:\PS>Update-Database -Script -SourceMigration $InitialDatabase
# Generate a script that can upgrade a database currently at any version to the latest version.
# The generated script includes logic to check the __MigrationsHistory table and only apply changes
# that haven't been previously applied.
|
示例6 |
C:\PS>Update-Database -TargetMigration $InitialDatabase
# Runs the Down method to roll-back any migrations that have been applied to the database
|
备注 |
若要查看示例,请键入: "get-help Update-Database -examples".
有关详细信息,请键入: "get-help Update-Database -detailed".
若要获取技术信息,请键入: "get-help Update-Database -full".
|
名称 |
Get-Migrations
|
摘要 |
Displays the migrations that have been applied to the target database.
|
语法 |
Get-Migrations [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [-AppDomainBaseDirectory <String>] [<CommonParameters>]
Get-Migrations [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] -ConnectionString <String> -ConnectionProviderName <String> [-AppDomainBaseDirectory <String>] [<CommonParameters>]
|
说明 |
Displays the migrations that have been applied to the target database.
|
参数 |
-ProjectName <String>
Specifies the project that contains the migration configuration type to be used. If omitted, the default project selected in package manager console is used. 是否必需? False -StartUpProjectName <String> 是否必需? False -ConfigurationTypeName <String> 是否必需? False -ConnectionStringName <String> 是否必需? False -ConnectionString <String> 是否必需? True -ConnectionProviderName <String> 是否必需? True -AppDomainBaseDirectory <String> 是否必需? False <CommonParameters> |
示例 1 |
|
示例 2 |
|
示例 3 |
|
备注 |
若要查看示例,请键入: "get-help Get-Migrations -examples".
有关详细信息,请键入: "get-help Get-Migrations -detailed".
若要获取技术信息,请键入: "get-help Get-Migrations -full".
|
EF6 CodeFirst代码迁移笔记的更多相关文章
- EF6 CodeFirst 实践系列文章列表
2015 Jul.16 EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一) 来自:wangweimutou 本系列源自对EF6 CodeFirst的探索 ...
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一)
前言 本系列源自对EF6 CodeFirst的探索,但后来发现在自己项目中构建的时候遇到了一些问题以及一些解决方法,因此想作为一个系列写下来. 本系列并不是教你怎么做架构设计,但可以参照一下里面的方法 ...
- EF CodeFirs 代码迁移、数据迁移
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 标题叫EF CodeFirs 代码迁移.数据迁移. ...
- Entity Framework CodeFirst数据迁移
前言 紧接着前面一篇博文Entity Framework CodeFirst尝试. 我们知道无论是“Database First”还是“Model First”当模型发生改变了都可以通过Visual ...
- 在ASP.NET MVC5 及 Visual Studio 2013 中为Identity账户系统配置数据库链接及Code-First数据库迁移
在ASP.NET MVC5 及 Visual Studio 2013 中为Identity账户系统配置数据库链接及Code-First数据库迁移 最近发布的ASP.NET MVC 5 及Visual ...
- EF-关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析
前有ADO.NET,后有ORM模式的EntityFramework.这两种技术都实现了对数据库的访问操作.如果要说哪种技术好,就看项目架构的大小,使用者的熟练程度等等,毕竟萝卜白菜,各有所爱. 今天要 ...
- EF Code-First数据迁移
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
- 【EF】EF Code-First数据迁移
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(完)
前言 这一篇是本系列的最后一篇,虽然示例讲到这里就停止呢,但对于这些技术的学习远不能停止.虽然本示例讲的比较基础,但是正如我第一篇说到的,这个系列的目的不是说一些高端的架构设计,而是作为一个入门级,对 ...
随机推荐
- c# 输入姓名直到输入的是quit时,停止输入然后显示出输入的姓名个数及姓名
1.输入姓名直到输入的是quit时(不区分大小写),停止输入然后显示出输入的姓名个数及姓名: 要求结果如下图所示: class Program { static void Main(string[] ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...
- 20164321 王君陶 Exp1 PC平台逆向破解
一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getS ...
- 复制表结构和内容到另一张表中的SQL语句
1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1= ...
- java实现简单扫雷游戏
/** * 一个简单的扫雷游戏 MainFram.java */ package www.waston; import java.awt.BorderLayout; import java.awt.C ...
- Java 日期加减
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class Test ...
- [Angular 6] 初学angular,环境全部最新,[ ng serve ] 不能启动,卡在 95% 不动 => 解决方案
2018.9.7 问题描述: 通过ng serve命令启动angular应用时,卡在95%, ctrl+c 停掉后看到错误内容为找不到ng_modules下的angular模块下的package.js ...
- HttpClient调用IdentityServer4获取Token并调用接口
using System; using System.Net.Http; using IdentityModel.Client; namespace ClientCredential { class ...
- 奇怪的Java题:为什么1000 == 1000返回为False,而100 == 100会返回为True?
如果你运行如下代码: 1 2 3 4 Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = ...
- layer_mobile的简单使用
layer mobile弹层组件是为移动设备(手机.平板等webkit内核浏览器/webview)量身定做的弹层UI. 由于是采用原生 JavaScript编写,所以并不依赖任何第三方库. layer ...