写在前面

前面有篇文章,尝试了db first方式,但不知道是什么原因一直没有成功,到最后也没解决,今天就尝试下code first的方式。

一个例子

步骤

Connector/Net 下载该文件,并安装(如果没安装,请先安装)

使用Nuget安装EF

使用Nuget安装mysql提供程序。

在上面的步骤完成后,修改web.config文件,内容如下:

注意entityFramework 节点,默认是不会有codeConfigurationType属性的,请添加。否则会出现下面的错误:Specified key was too long; max key length is 767 bytes

测试

实体类

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceWolfy.Ef_MySql_CodeFirst

{public classProduct

{public int Id { set; get; }

[MaxLength(128)]public string Name { set; get; }

[MaxLength(128)]public string Category { set; get; }public decimal Price { set; get; }public DateTime CreateDate { set; get; }

}

}

插入信息

usingSystem;usingSystem.Collections.Generic;usingSystem.Data.Entity;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceWolfy.Ef_MySql_CodeFirst

{classProgram

{static void Main(string[] args)

{var dbContext = newMyContext();

IDatabaseInitializer dbInitializer = null;if(dbContext.Database.Exists())

{//如果数据库已经存在

dbInitializer = new DropCreateDatabaseIfModelChanges();

}else{//总是先删除然后再创建

dbInitializer = new DropCreateDatabaseAlways();

}//Database.SetInitializer(dbInitializer);

dbInitializer.InitializeDatabase(dbContext);

dbContext.Products.Add(new Product() { CreateDate = DateTime.Now.AddDays(1), Name = "南孚电池", Category = "生活用品", Price = 3});

dbContext.SaveChanges();

}

}

}

还有一个错误经常出现

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

大概意思是:不能检查模型的兼容性,因为数据库不包含模型元数据。在使用code first或者code fisrt迁移进行数据库创建的时候需要检查模型的兼容性。

此时,虽然生成了表_migrationhistory,但是该表内容为空。

这个时候可以将数据库删除,重新生成就可以解决。

其中表_migrationhistory为创建历史表。

Products表

发现添加的数据中中文为乱码,这是因为mysql默认的字符集为latin

关于乱码的解决方案很多,你可以修改数据库的字符集,或者数据表的字符集。也可以这样,修改连接字符串:

总结

折腾了一上午,一个简单的demo出来了。

ef mysql code first_[EF]vs15+ef6+mysql code first方式相关推荐

  1. [EF]vs15+ef6+mysql这个问题,你遇到过么?

    写在前面 因为最近用mysql比较多,所以想了解下ef+mysql的内容,发现ef连接mysql数据库,还有那么一段路折腾.折腾到最后,发疯了. 步骤 这里采用db first的方式来使用ef. 通过 ...

  2. ef6 mysql code first_使用EntityFramework6连接MySql数据库(code first方式)

    demo托管地址:http://git.oschina.net/uustudy/ASP.NET-CodeFirst-MySQL-Demo.git 首先和DB First那篇文章一样,准备工具都要一样的 ...

  3. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3

    写在前面 本篇文章将新建文件夹的逻辑也进行一下修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ...

  4. [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2

    写在前面 上篇文章修改文件上传的逻辑,这篇修改下文件下载的逻辑. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实 ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

    写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ...

  6. [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表

    写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ...

  7. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  8. ef mysql code first_关于ef+codefirst+mysql(入门)

    ef+mssql详细是许多.net程序员的标配.作为一个程序员当然不能只会mssql这一个数据库,今天简单聊聊ef+mysql.推荐新人阅读. 1]首先创建一个mvc项目,如图: 创建完毕之后再nug ...

  9. vs2013+EF6+Mysql

    1.首先需要在整个项目中添加一个Model类库,在类库中引用EF 我需要在该项目下添加EF的MYSQL对象实体 首先需要引入几个相关引用,我通过NuGet来添加,如下图 接下来我需要通过ADO.NET ...

最新文章

  1. 135.003 智能合约后端优化和产品化
  2. php如何隐藏入口文件,PHP怎样隐藏入口文件
  3. centos7安装redmine3.4
  4. Kinect实现简单的三维重建
  5. php字符传截取,php怎么实现字符串截取?
  6. P3338 [ZJOI2014]力(FFT)
  7. [转载] java之重写toString
  8. 图片里的标志化的构造和执行
  9. 大数据定制化服务需在成本和差异化间平衡
  10. 图片预览(适用于IE6,9,10,Firefox)
  11. java+phantomjs实现动态网页抓取
  12. 关于es6中新增的一些方法----数组篇
  13. ubuntu18.04+RTX 3090安装docker并配置pytorch环境
  14. cad字体安装_为什么CAD图纸打开后会显示很多问号“???”,该怎么解决
  15. 发卡行 收单行 收单
  16. 简易计算器app的制作
  17. Spring Boot——集成spring-boot-starter-mail发送163邮箱|QQ邮箱|Gmail邮箱邮件
  18. Cramér‐von Mises检验
  19. 计算机设备评分标准,电脑租赁设备评判标准(硬件篇)
  20. 同盾科技声纹识别建模大赛

热门文章

  1. MySql分表、分库、分片和分区的区别
  2. mysql封装成类_python操作mysql封装成类
  3. Framebuffer 画点,画线,画多边形,画圆
  4. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器
  5. Java类和对象基础题_java类和对象基础题2
  6. python socket代码_python入门之socket代码练习
  7. python设置背景音乐_python给视频添加背景音乐并改变音量的具体方法
  8. java 导出pdf_一次java导出pdf的经历
  9. oauth最后的确认按钮_spring-oauth集成cas单点登录,登陆完成进入授权页面后,按回退按钮进入404页面的问题...
  10. vba字典合并单元格为空_VBA合并单元格求和处理套路