Entity Framework + MySQL 特殊点总结
2017-11-23 22:58
661 查看
由于不是自家的,MySQL和SQL
Server比起来要多做很多配置。下面总结了一些,如果有没涉及到的地方,欢迎补充。
1、添加MySql.Data、MySql.Data.Entity的引用。
2、如果没有自动配置,则在Config中给connectionStrings配置:providerName="MySql.Data.MySqlClient"。
3、在Code
First模式下,自动创建仅在无数据库的时候触发,和正常的一样会创建库、migration表、model表,但没法自动更新单独的改动。
4、须要给你的DbContext加上Attribute:[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
5、实施乐观锁的Timestamp字段(SQL
Server中叫RowVersion)。
5.1、需要在MySql数据库中配置Timestamp字段默认值为CURRENT_TIMESTAMP。并且注意默认的精度只到秒,需要配置Timestamp(3)来精确到毫秒,只有MySql5.6.4以后的版本支持这样的精度,最多6位精度。
5.2、对应EF实体类中,使用DateTime类型属性。(SQL
Server中使用byte[]类型)。
5.3、对应EF实体类的Config中配置Property(x=>x.rowver).IsConcurrencyToken(),申明是并发控制属性;对应EF实体类的Config中配置Property(x=>x.rowver).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity),申明由数据库自行更新;由于破坏了“约定”,须对Id列手动配置Property(x=>x.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity),使其继续作为主键,由数据库自行更新。(SQL
Server中只要Property(x=>x.rowver).IsRowVersion()就好了,吐血)
6、一个调优细节,如果是由纯数字组成的字符串类型的字段,比如电话号码,对应EF实体类的Config中可以配置Property(x
=> x.PhoneNum).IsUnicode(false),来减少存储容量的占用,可是这招对MySql没有效果,因为这招利用的是Sql
Server的字符串分为varchar和nvarchar,而MySql是不区分的。
Server比起来要多做很多配置。下面总结了一些,如果有没涉及到的地方,欢迎补充。
1、添加MySql.Data、MySql.Data.Entity的引用。
2、如果没有自动配置,则在Config中给connectionStrings配置:providerName="MySql.Data.MySqlClient"。
3、在Code
First模式下,自动创建仅在无数据库的时候触发,和正常的一样会创建库、migration表、model表,但没法自动更新单独的改动。
4、须要给你的DbContext加上Attribute:[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
5、实施乐观锁的Timestamp字段(SQL
Server中叫RowVersion)。
5.1、需要在MySql数据库中配置Timestamp字段默认值为CURRENT_TIMESTAMP。并且注意默认的精度只到秒,需要配置Timestamp(3)来精确到毫秒,只有MySql5.6.4以后的版本支持这样的精度,最多6位精度。
5.2、对应EF实体类中,使用DateTime类型属性。(SQL
Server中使用byte[]类型)。
5.3、对应EF实体类的Config中配置Property(x=>x.rowver).IsConcurrencyToken(),申明是并发控制属性;对应EF实体类的Config中配置Property(x=>x.rowver).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity),申明由数据库自行更新;由于破坏了“约定”,须对Id列手动配置Property(x=>x.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity),使其继续作为主键,由数据库自行更新。(SQL
Server中只要Property(x=>x.rowver).IsRowVersion()就好了,吐血)
6、一个调优细节,如果是由纯数字组成的字符串类型的字段,比如电话号码,对应EF实体类的Config中可以配置Property(x
=> x.PhoneNum).IsUnicode(false),来减少存储容量的占用,可是这招对MySql没有效果,因为这招利用的是Sql
Server的字符串分为varchar和nvarchar,而MySql是不区分的。
相关文章推荐
- WCF+EntityFramework+mysql总结
- WCF+EntityFramework+mysql总结
- .net Entity Framework + mysql 使用中常见问题
- [Entity Framework] MySQL @ Entity Framework 6
- Mysql ADO.NET Entity Framework
- MVC UnitOfWork EntityFramework架构,网站速度慢的原因总结!
- Entity Framework Code First ---EF Power Tool MySql
- entity framework in mysql
- “TableDetails”中列“IsPrimaryKey”的值为DBNull. Mysql EntityFramework
- ASP.NET MVC4 Entity Framework and Mysql
- MySQL特殊需求总结及其实现方法
- Entity Framework With Mysql 之Code First
- visualstudio 2013 mysql entityframework :实体模型无法添加,闪退
- EntityFramework+MySql 笔记2
- [ADO.Net] ADO.NET Entity Framework To MySql 简单测试配置
- mysql的sql语句特殊处理语句总结(必看)
- ADO.NET Entity framework 连接MySql 提示The specified store provider cannot be found in the configuration
- 对ADO.Net Entity Framework的了解总结
- [Entity Framework+MVC复习总结1]-WebForm与Asp.Net MVC
- Entity framework for mysql 连接插件