• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 在EF中使用MySQL的方法及常见问题_MySQL

在EF中使用MySQL的方法及常见问题_MySQL

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了ef,mysql常见问题等相关知识,希望本文的分享对您有所帮助
有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql……

注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用utf8,不过我不知道在ef生成数据库时如何设置,希望高手指点)

一、在项目中引用mysql的EF包

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

也可以用nuget的命令行加入:

Install-Package MySql.Data.Entity

二、新建相关类

1、新建 User 实体类

并定义实例的字段长度,不定义的话会出现Specified key was too long;max key length is 767 bytes 的错误,这是因为string 类型直接映射到mysql 中的话是longtext,而mysql 支持最大长度为767 bytes.

public class User
{
public int Id { get; set; }
[StringLength(30)]
public string UserName { get; set; }
[MaxLength(30)]
public string PassWord { get; set; } } 

2、新建 MyContext 类

并说明用MySql进行实现 [DbConfigurationType(typeof(MySqlEFConfiguration))]

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class MyContext : DbContext
{
public MyContext()
: base("name=MyContext")//web.config中connectionstring的名字
{
}
public DbSet Users { get; set; }
}

3、写测试代码

Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
var context = new MyContext();
//插入一行值
context.Users.Add(new User { UserName = "EF6MySQL" });
context.SaveChanges(); 

三、配置Web.config

在中加入以下代码:


完整的web.config如下:

<?xml version="1.0" encoding="utf-8"?>



最后,运行程序,完成数据库自动创建

常见问题

•出现错误提示: Specified key was too long;max key length is 767 bytes

1)查看实体的字符串类型属性是否设置了长度

2)MyContext 类中是否声明为生成为mysql 数据类型的 [DbConfigurationType(typeof(MySqlEFConfiguration))]

•出现错误提示: Model compatibility cannot be checked because the database does not contain model metadata

删除已生成的数据库后重新运行程序

•出现错误提示:序列不包含任何匹配元素

检查一下:

例如:1.

public class Employee
{
[Key]
public int EmployeeId { get; set; }
public string Name { get; set; }
[ForeignKey("ManagerId")]
public Employee Manager { get; set; }
public int ManagerId { get; set; }
}[ForeignKey("ManagerId")] public Employee Manager { get; set; } public int ManagerId { get; set; }这个外键设置。 

2.[Column(TypeName="VARCHAR(254)")] public string ColumnName { get; set; } 这样的定义,改成: [MaxLength(254)] [Column(TypeName="VARCHAR")] public string ColumnName { get; set; }3.(以下代码未测试,因为我不是这样用的,在下篇文章中将进行测试)

modelBuilder.Entity()
.HasKey(c => c.IdCategory )
.HasOptional(p => p.Children)
.WithMany()
.HasForeignKey(c => c.ChildrenId);

改成:

modelBuilder.Entity()
.HasKey(c => c.IdCategory )
.HasMany(p => p.Children)
.WithOptional()
.HasForeignKey(c => c.ChildrenId);

.WithMany()换成.WithOptional()

以上所述是小编给大家介绍的在EF中使用MySQL的方法及常见问题的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Mysql跨表更新 多表update sql语句总结
  • 深入理解mysql之left join 使用详解
  • 重新restore了mysql到另一台机器上后mysql 编码问题报错
  • MYSQL无法启动提示: Default storage engine (InnoDB) is not available的解决方法
  • mysql多表join时候update更新数据的方法
  • mysql中将null值转换为0的语句
  • MYSQL数据库中的现有表增加新字段(列)
  • MySQL JOIN之完全用法
  • MYSQL explain 执行计划
  • 超详细mysql left join,right join,inner join用法分析

相关文章

  • 2018-12-05MySQL中key与index详细介绍
  • 2018-12-05sqlserver 索引的一些总结
  • 2017-05-11关于mysql innodb count(*)速度慢的解决办法
  • 2018-12-05SQL语句优化方法30例(推荐)
  • 2018-12-05【设置字符集】Win7 64位系统安装MySQL5.5.21图解教程_MySQL
  • 2018-12-05数据库的QPS和TPS的意义和计算方法
  • 2017-05-11MySQL存储毫秒数据的方法
  • 2018-12-05实例详解MySQL5.7中 performance和sys schema中的监控参数
  • 2017-05-11关于MYSQL中每个用户取1条记录的三种写法(group by xxx)
  • 2018-12-05Mysql获取id最大值、表的记录总数等相关问题的方法汇总_MySQL

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 数据库查询优化Mysql索引_MySQL
    • MySQL查询倒数第二条记录实现方法
    • MySQL之——主从复制的一些参数配置
    • 简单介绍Mysql的SQL服务器模式
    • MAC下MYSQL数据库密码忘记了怎么办
    • 入侵技术如何使用?总结入侵技术实例用法
    • MySQL5.7中union all用法的黑科技的图文代码介绍
    • MySQL分表自增ID问题的解决方法_MySQL
    • 关于悲观锁的详细介绍
    • 推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有