MySQL

Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7

Последнее обновление: 18.11.2020

На данный момент для работы с MySQL имеется несколько провайдеров, но в данном случае мы будем использовать провайдер Pomelo.EntityFrameworkCore.MySql от Pomelo Foundation Project. Стоит отметить, что на данный момент (18 ноября 2020) для версии EF Core он пока в предрелизном состоянии, поэтому мы будем использовать предрелизную версию.

Для подключения к MySQL создадим новый консольный проект .NET Core и добавим через Nuget пакет Pomelo.EntityFrameworkCore.MySql:

MySQL в Entity Framework Core

Стоит отметить, что также есть официальный провайдер от 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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850