zoukankan      html  css  js  c++  java
  • 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     }
    View Code

    运行结果如图:

    操作成功。

    查询数据库结果如图:

    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

    这样数据迁移就能完成了

  • 相关阅读:
    [opencv] 生成标定棋盘格
    [opencv] cmake编译opencv并去窗口边框
    [opencv] matlab生成opencv可读的xml
    [matlab] vc++和matlab混合编程
    全息摄影
    [opencv&opengl]多窗口显示
    CPLEX
    ios读取设备姿态并传输
    python: 基本知识记录
    css: position的使用;
  • 原文地址:https://www.cnblogs.com/whyd/p/9348325.html
Copyright © 2011-2022 走看看