Использование MySQL с Entity Framework

Не могу найти что-либо релевантное о Entity Framework/MySQL в Google, поэтому я надеюсь, что кто-то знает об этом.

11 ответов

Это было выпущено - Получите соединитель MySQL для.Net v6.5 - это имеет поддержку [Entity Framework]

Я ждал этого все время, хотя поддержка является базовой, работает для большинства основных сценариев взаимодействия с БД. Он также имеет базовую интеграцию Visual Studio.

ОБНОВЛЕНИЕ http://dev.mysql.com/downloads/connector/net/ Начиная с версии 6.7, Connector/Net больше не будет включать интеграцию MySQL для Visual Studio. Эта функциональность теперь доступна в отдельном продукте MySQL для Visual Studio, доступном с помощью установщика MySQL для Windows (см. http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html).

MySQL организует вебинар по EF через несколько дней... Смотрите здесь: http://www.mysql.com/news-and-events/web-seminars/display-204.html

Изменить: этот вебинар в настоящее время на http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html

Дело не в РС, а в том, что они хотят. Они создали * открытую систему, чтобы другие могли подключить "провайдеров" - у postgres и sqlite - mysql - это просто лаг... но, хорошая новость для заинтересованных, я тоже искал это и обнаружил, что MySql Connector/Net 6.0 будет иметь это... вы можете проверить это здесь:

http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx

Вам потребуется картографический поставщик для MySQL. Это дополнительная вещь, необходимая Entity Framework для того, чтобы волшебство произошло. В этом блоге рассказывается о других поставщиках картографических услуг, помимо тех, которые поставляет Microsoft. Я не нашел никаких упоминаний о MySQL.

Vintana,

Конечно, сейчас кое-что готово. http://www.devart.com/products.html - хотя он и коммерческий (у вас есть 30-дневная пробная версия IIRC). Они зарабатывают на жизнь написанием провайдеров, поэтому я думаю, это должно быть быстро и стабильно Я знаю действительно большие компании, использующие своего провайдера Oracle вместо Orace и MS.

В этом руководстве по MySQL показано, как создавать и использовать объекты EF в качестве источника данных для элемента управления.

Будьте осторожны при использовании соединителя.net, в соединителе 6.6.5 есть ошибка, она не работает для вставки значений tinyint в качестве идентификатора, например:

create table person(
    Id tinyint unsigned primary key auto_increment,
    Name varchar(30)
);

если вы попытаетесь вставить объект следующим образом:

Person p;
p = new Person();
p.Name = 'Oware'
context.Person.Add(p);
context.SaveChanges();

Вы получите исключение Null Reference:

Referencia a objeto no establecida como instancia de un objeto.:
   en MySql.Data.Entity.ListFragment.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SelectStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.InsertStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SqlFragment.ToString()
   en MySql.Data.Entity.InsertGenerator.GenerateSQL(DbCommandTree tree)
   en MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   en System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
   en System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   en System.Data.Entity.Internal.InternalContext.SaveChanges()
   en System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   en System.Data.Entity.DbContext.SaveChanges()

До сих пор я не нашел решения, мне приходилось менять свою идентификацию tinyint на unsigned int identity, это решало проблему, но это не правильное решение.

Если вы используете более старую версию Connector.net (я использовал 6.4.4), у вас не будет этой проблемы.

Если кто-то знает о решении, пожалуйста, свяжитесь со мной.

Ура!

Oware

Вы также можете посмотреть на https://www.devart.com/dotconnect/mysql/

Разъем DevArt поддерживает EF и MySQL.

Я не видел ссылку здесь, но есть бета.NET Connector для MySql. Нажмите "Development Releases", чтобы загрузить бета-версию 6.3.2 с интеграцией EF4/VS2010:

http://dev.mysql.com/downloads/connector/net/5.0.html

Если вы заинтересованы в запуске Entity Framework с MySql на mono/linux/macos, это может быть полезно https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/

Другие вопросы по тегам