Работа с MySQL

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

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

MySQL является одной из самых распространенных баз данных, которая может использоваться также и в связке с ASP.NET MVC. Для работы с MySQL нам нужен естественно сам MySQL Server, на котором будет находиться база данных. Кроме того, поскольку мы будем работать с C#, то на целевом компьютере должен быть установлен также MySQL Connector.NET 6.9.6. Но необязательно устанавливать раздельно, поскольку при установке сервера MySQL в последних версиях можно сразу установить и MySQL Connector.

Поскольку мы будем взаимодействовать с базой данных через Entity Framework, то соответственно добавим нужный пакет через NuGet. И также через NuGet добавим в проект еще один пакет, который называется MySql.Data.Entity:

MySql.Data.Entity в ASP.NET MVC 5

Вместе с этим пакетом в проект также будет установлен другой пакет - MySql.Data.

Затем в файле web.config определим подключение, которое будет использоваться:

<connectionStrings>
    <add name="conn" providerName="MySql.Data.MySqlClient" 
		connectionString="server=localhost;UserId=root;Password=password1;database=mobiledb;CharSet=utf8;Persist Security Info=True" />
</connectionStrings>

В данном случае база данных будет называться mobiledb. При этом важно указать точные данные для параметра UserId и Password - соответственно логин и пароль для подключения к базе данных.

Далее добавим простенькую модель и контекст данных:

public class Phone
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Company { get; set; }
}

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MobileContext : DbContext
{
    public MobileContext(): base("conn")
    { }

    public DbSet<Phone> Phones { get; set; }
}

При создании контекста данных к нему надо применить атрибут DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration)). В остальном особых различий при подключении к mysql по сравнению с MSSQL нет.

Например, пусть у нас есть два действия по добавлению и выводу объектов:

private MobileContext db = new MobileContext();

public ActionResult Index()
{
    return View(db.Phones.ToList());
}
public ActionResult Create()
{
    return View();
}
[HttpPost]
public ActionResult Create(Phone phone)
{
    db.Phones.Add(phone);
    db.SaveChanges();
    return RedirectToAction("Index");
}

Добавим несколько объектов:

И затем с помощью дополнительных утилит, например, MySQL Workbench, можно уидеть созданную азу данных, ее структуру и получить с помощью запроса хранящиеся там объекты:

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850