EF провайдеры баз данных - MySQL
На данный момент для работы с 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
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.