ef core与mysql_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 classBlog

{public int Id { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }

}

public classAppDbContext:DbContext

{publicAppDbContext()

{

}public DbSet Blogs { get; set; }protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

//SslModel=None 这和ssl协议有关系。如果不指定会报错

optionsBuilder.UseMySQL("server=localhost;user=root;database=test;port=3306;password=****;SslMode=None");

}

}

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 classProgram2 {3

4 static void Main(string[] args)5 {6

7 using (var db = newAppDbContext())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 indb.Blogs)17 {18 Console.WriteLine("- {0}", blog.Title);19 }20 }21

22 Console.ReadLine();23 }24 }

View Code

运行结果如图:

c656566b2c03088a6f99ea6045175b53.png

操作成功。

查询数据库结果如图:

751e2d1839ece90aa74c16918b2a7a9a.png

efcore操作mysql数据库成功;

当前ef core mysql的包对数据迁移不是太好:

1.在首次创建迁移时,会把没有迁移前生成的表在生成一遍:

a2b7db46fb3dc369606e496159744eb6.png

解决方式是:

注释掉已经存在的表和关系代码。

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

这样数据迁移就能完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值