Использование MySQL с платформой Entity Framework

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

Он был выпущен – получите соединитель MySQL для .Net v6.5 – это поддерживает [Entity Framework]

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

UPDATE http://dev.mysql.com/downloads/connector/net/ Начиная с версии 6.7, Connector / Net больше не будет включать интеграцию MySQL для Visual Studio. Эта функциональность теперь доступна в отдельном продукте MySQL для Visual Studio, доступном с помощью MySQL Installer for 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

edit: Этот веб-семинар теперь находится по адресу http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html.

Речь идет не о MS и о том, чего они хотят. Они создали * открытую систему для других, чтобы подключаться к «провайдерам» – postgres и sqlite имеют это – mysql просто laggin … но, хорошие новости для тех, кого это интересует, я тоже искал это и обнаружил, что 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, Connector 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 Exception:

 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 на неподписанную идентификацию, это решило проблему, но это неправильное решение.

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

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

Ура!

Oware

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

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

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

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

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

  • Как я могу запросить нулевые значения в структуре сущностей?
  • ключевое слово не поддерживается источник данных
  • Связь не может быть изменена, поскольку одно или несколько свойств внешнего ключа не имеют значения NULL
  • Первоначальное понимание атрибута ForeignKey в коде структуры сущности
  • Как просмотреть SQL, созданный платформой Entity Framework?
  • Считаете ли вы целесообразным перейти на Entity Framework?
  • Как обновлять не все поля объекта с использованием Entity Framework и EntityState.Modified
  • SqlException из Entity Framework - новая транзакция не допускается, поскольку в сеансе есть другие streamи
  • Как передать параметры методу DbContext.Database.ExecuteSqlCommand?
  • Entity Framework v2 не поддерживает sql 2000?
  • От многих до многих сопоставление с дополнительными полями в Fluent API
  • Давайте будем гением компьютера.