1.通过NuGet包管理器安装:EntityFramework6.1.3、MySql.Data.Entity6.9.9

2.添加新建项→ADO.NET实体对象模型(命名MyContext)→空CodeFirst模型。该模型会自动在app.config中添加连接字符串

<connectionStrings>
<add name="MyContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=CodeFirstDemo.MyContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>

3.启用迁移。

在控制台中输入Enable-Migrations(启动迁移)。注意:默认项目一定要是模型所在的项目。

此时项目中会自动生成Migration文件夹

4.为迁移起个名字

在控制台输入:Add-Migration InitModel。(InitModel:为本次迁移起个名字)

此时在项目的Migration文件夹中会自动生成迁移记录文件,文件名以“当前时间_本次迁移的名字”作为类名。

记录文件有一个设计类和一个资源类和一个迁移具体操作的方法。

5.生成Sql脚本,用于检查语句问题。在mysql中有一点需要注意,字段类型如果是字符型256,会报错,需要调整一下长度。

在控制台输入Update-DataBase –script。生成Sql脚本。(在迁移过程中出现奇葩问题的时候,就生成sql脚本检查一下吧。)

6.更新本次迁移内容

Update-DataBase –verbose(或者-v)。更新数据库,并且查看执行的具体sql语句。

注意:

1、打开App.config或web.config:

找到连接字符串:

<connectionStrings>
<add name="MyContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=CodeFirstDemo.MyContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>

修改为MySql的连接字符串:

<connectionStrings>
<add name="ContextName" connectionString="Data Source=服务器地址;port=端口号;Initial Catalog=数据库名称;user id=账号;password=密码;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

2、这是因为当前的Sql生成器依然是MSSqlServer,那么如何启动MySql的Sql生成器呢?

在Migration文件夹中的配置类Congifuration的构造方法中:

public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());//设置Sql生成器为Mysql的
}

3、但是到仅仅这样还不够,因为上下文配置还是默认的MSSqlServer的,_MigrationHistory表也有字段是string类型的,还会出现该错误。

我们还要在MyContext类上通过特性标记上下文使用MySql的配置。

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
} ...
}

总结:

遇到最多的也是最难搞的就是这个报错:

通过生成的script来检查问题出在哪里,然后在Context中重写protected override void OnModelCreating(DbModelBuilder modelBuilder),来调整字段类型长度。

原文链接:http://www.cnblogs.com/kexxxfeng/p/5095812.html

asp.net mvc + mysql + ef6的更多相关文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  2. ASP.NET MVC + MySQL で開発環境構築

    from:http://qiita.com/midori44/items/ef7cdd1d37c353e44b5f ASP.NET MVC & EntityFramework によるコードファ ...

  3. Asp.net Mvc 使用EF6 code first 方式连接MySQL总结

    最近由于服务器变更为Linux系统.MsSql for Linux什么时候出来到生产环境使用还是要很长时间的.于是考虑使用Mysql数据库,ORM使用EF.于是先踩下坑顺便记录一下,有需要的tx可以参 ...

  4. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理4

    首先先加个区域,名为Admin using System.Web.Mvc; namespace AuthorDesign.Web.Areas.Admin { public class AdminAre ...

  5. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

    接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...

  6. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7

    做完角色之后接下来做先做页面按钮的增加.删除.修改.这里用到的功能和角色那边是一样的.就不多说了.直接上代码. 后台控制器代码 using AuthorDesign.Web.App_Start.Com ...

  7. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8

    接下来做的是对页面的增删改查与页面与页面按钮之间的联系.先上代码和页面效果 using AuthorDesign.Web.App_Start.Common; using System; using S ...

  8. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  9. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理1

    首先给上项目的整体框架图:,这里我没有使用BLL,因为感觉太烦了就没有去使用. 那么接下来我们首先先去Model层中添加Model. 管理员类: using System; using System. ...

随机推荐

  1. MVC 5 - 查询Details和Delete方法

    MVC 5 - 查询Details和Delete方法 在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看De ...

  2. SOLID 设计原则 In C# 代码实现

    [S] Single Responsibility Principle (单一职责原则) 认为一个对象应该仅只有一个单一的职责 namespace SingleResponsibilityPrinci ...

  3. jsonp跨域+ashx

    jsonp跨域+ashx(示例) 前言 做B/S项目的时候,我们一般使用jquery+ashx来实现异步的一些操作,比如后台获取一些数据到前台,但是如果ashx文件不在本项目下,引用的是别的域下的文件 ...

  4. win7 64位iis发生错误w3wp.exe解决方法

    服务器为64的,遇到iis错误w3wp.exe 于是百度,网上说的修改iis权限和修改注册表都不行,后来在msdn上找到解决方法,如下所示 设置iis程序集如下即可

  5. webx学习1

    webx的配置 如果想在web项目中使用webx框架,需要在web-inf/web.xml文件中进行相关的配置. 1.初始化spring容器 初始化spring容器- /web-inf/web.xml ...

  6. spring.NET的依赖注入

    谈谈自己了解的spring.NET的依赖注入   spring.net里实现了控制反转IOC(Inversion of control),也即依赖注入DI(Dependency Injection), ...

  7. Scrum与高效能人士

    Scrum与高效能人士的执行4原则   分享了高效能人士的执行4原则,发现它和Scrum非常相近,可以形成互补. Scrum框架: 高效能人士的执行4原则框架: Scrum与4原则 Sprint Ba ...

  8. IE回车的怪异行为

    问题 IE浏览器在input中回车,会触发button按钮的click事件. 原因分析 IE浏览器中在input中回车相当于提交form,而button标签默认的类型是submit, 所以如果没有指定 ...

  9. SOCKET网络编程5

    SOCKET网络编程快速上手(二)——细节问题(5)(完结篇) 6.Connect的使用方式 前面提到,connect发生EINTR错误时,是不能重新启动的.那怎么办呢,是关闭套接字还是直接退出进程呢 ...

  10. C# 添加敏感词

    public class CheckStreamReader { //使用的数据: private static HashSet<string> hash = new HashSet< ...