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

275

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

  • 8
    Откровенно говоря, поддержка mysql для LINQ - это чушь! Я бьюсь головой о мелких проблемах за последнюю неделю: | ...
  • 1
    Вы использовали dblinq code.google.com/p/dblinq2007 ?
Теги:
entity-framework
ado.net

11 ответов

190

Он был выпущен - получите соединитель 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 for Visual Studio, доступном с помощью MySQL Installer for Windows (см. http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html).

  • 0
    Спасибо за обновление, я ждал того же!
  • 0
    Спасибо за информацию!
Показать ещё 9 комментариев
21
  • 0
    Я исправил кодировку этой ссылки - теперь пользователи могут щелкнуть прямо, а не копировать / вставлять или выбирать / переходить
  • 7
    Ссылка не работает
Показать ещё 2 комментария
10

В течение нескольких дней 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

  • 1
    Ссылка не работает.
7

Это не о 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

  • 1
    Интересно, что означает «начальный», когда они сказали «Начальная поддержка Entity Framework».
4

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

  • 0
    Да, ты прав. Я надеялся, что сейчас что-то готово.
2

Vintana,

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

  • 0
    Благодарю за ваш ответ. @ Vintana, вы можете найти больше информации о dotConnect для MySQL и его преимуществах здесь devart.com/dotconnect/mysql . Чтобы улучшить вашу работу с объектами Entity Framework, мы предоставляем усовершенствованный инструмент для создания визуальных моделей - Entity Developer devart.com/entitydeveloper .
1

Будьте осторожны при использовании разъема .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 на неподписанный идентификатор int, это решило проблему, но это не правильное решение.

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

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

Ура!

Oware

  • 0
    Ошибка генерируется, потому что p равно нулю. Сначала вы должны создать новый пустой экземпляр объекта. Т.е. Person p = new Person (); не человек р; Итак: Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
  • 0
    извините, я забыл добавить новую строку, даже если я добавляю новую строку, ошибка все еще появляется
Показать ещё 1 комментарий
1

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

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

1

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

  • 3
    Ссылка не работает, учебник можно найти здесь .
  • 0
    Переехал снова .
0

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

  • 0
    Использование MYSQL с EF улучшилось или все еще есть проблемы? Если SQL-сервер предпочтителен, может ли кто-нибудь точно определить, почему SQL-сервер предпочтителен только потому, что тот же поставщик Microsoft?
  • 0
    Я не уверен, как это сейчас, но у нас был довольно плохой опыт из-за отсутствия функций, и это в целом противоречиво. MS MSQL определенно предпочтительнее, потому что Microsoft ставит свой собственный стек первым.
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню