ef core操作mysql
Posted whyld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ef core操作mysql相关的知识,希望对你有一定的参考价值。
ef core操作mysql当前官方提供的最新版本是:8.0.1
需要安装的包分别是:
MySql.Data
MySql.Data.EntityFrameworkCore
MySql.Data.EntityFrameworkCore.Design
其他的安装包不用安装,如果安装了其他版本的依赖包则会报错;
数据迁移需要导入Microsoft.EntityFrameworkCore.Design,版本是2.0.0;
尝试了最新版本的2.1.1但是不行,在数据操作时候报错。
接下来就可以连接mysql了
public class Blog { public int Id { get; set; } public string Title { get; set; } public DateTime CreateTime { get; set; } }
public class AppDbContext:DbContext { public AppDbContext() { } public DbSet<Blog> Blogs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
//SslModel=None 这和ssl协议有关系。如果不指定会报错 optionsBuilder.UseMySQL("server=localhost;user=root;database=test;port=3306;password=****;SslMode=None"); } }
1 class Program 2 { 3 4 static void Main(string[] args) 5 { 6 7 using (var db = new AppDbContext()) 8 { 9 db.Database.EnsureCreated(); 10 db.Blogs.Add(new Blog { Title = "http://blogs.msdn.com/adonet",CreateTime = DateTime.Now}); 11 var count = db.SaveChanges(); 12 Console.WriteLine("{0} records saved to database", count); 13 14 Console.WriteLine(); 15 Console.WriteLine("All blogs in database:"); 16 foreach (var blog in db.Blogs) 17 { 18 Console.WriteLine(" - {0}", blog.Title); 19 } 20 } 21 22 Console.ReadLine(); 23 } 24 }
运行结果如图:
操作成功。
查询数据库结果如图:
efcore操作mysql数据库成功;
当前ef core mysql的包对数据迁移不是太好:
1.在首次创建迁移时,会把没有迁移前生成的表在生成一遍:
解决方式是:
注释掉已经存在的表和关系代码。
2.首次进行迁移执行update-database的时候,会报错:
MySql.Data.MySqlClient.MySqlException (0x80004005): Table \'test.__efmigrationshistory\' doesn\'t exit
解决方式是:
手动创建这个 \'test.__efmigrationshistory\' 表
CREATE TABLE `__EFMigrationsHistory`
(
`MigrationId` nvarchar(150) NOT NULL,
`ProductVersion` nvarchar(32) NOT NULL,
PRIMARY KEY(`MigrationId`)
);
然后执行update-database
这样数据迁移就能完成了
以上是关于ef core操作mysql的主要内容,如果未能解决你的问题,请参考以下文章