Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7
На данный момент для работы с MySQL имеется несколько провайдеров, но в данном случае мы будем использовать провайдер Pomelo.EntityFrameworkCore.MySql от Pomelo Foundation Project. Стоит отметить, что на данный момент (18 ноября 2020) для версии EF Core он пока в предрелизном состоянии, поэтому мы будем использовать предрелизную версию.
Для подключения к MySQL создадим новый консольный проект .NET Core и добавим через Nuget пакет Pomelo.EntityFrameworkCore.MySql:
Стоит отметить, что также есть официальный провайдер от Oracle - MySql.Data.EntityFrameworkCore, но он развивается довольно медленно (на данный момент не поддерживает EF Core 5.x), кроме того, не имеет поддержки ряда функционала.
Для работы определим модель User:
public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
И также определим контекст данных - класс ApplicationContext:
using Microsoft.EntityFrameworkCore; namespace MySQLApp { public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public ApplicationContext() { Database.EnsureCreated(); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql( "server=localhost;user=root;password=12345678;database=usersdb5;", new MySqlServerVersion(new Version(8, 0, 11)) ); } } }
Для работы с MySQL вызывается метод UseMySql(), в который передается строка подключения. В строке подключения указываются адрес сервера (параметр server), имя пользователя в субд (User), его пароль (Password) и имя базы данных (Database).
В качестве второго параметра передается номер версии MySQL в виде объекта MySqlServerVersion - в его конструктор передается
объект Version
, который собственно содержит номер установленной версии MySQL. Например, в моем случае это версия 8.0.11,
соответственно я передаю объект new MySqlServerVersion(new Version(8, 0, 11))
.
И для тестирования определим в файле Program.cs добавление и вывод данных:
using System; using System.Linq; namespace MySQLApp { class Program { static void Main(string[] args) { // добавление данных using (ApplicationContext db = new ApplicationContext()) { User user1 = new User { Name = "Tom", Age = 33 }; User user2 = new User { Name = "Alice", Age = 26 }; db.Users.AddRange(user1, user2); db.SaveChanges(); } // получение данных using (ApplicationContext db = new ApplicationContext()) { var users = db.Users.ToList(); Console.WriteLine("Список объектов:"); foreach (User u in users) { Console.WriteLine($"{u.Id}.{u.Name} - {u.Age}"); } } } } }
Результат программы:
Объекты успешно сохранены Список объектов: 1.Tom - 33 2.Alice - 26