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

這樣數據遷移就能完成了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM