将 MySQL 与实体框架一起使用 [关闭]
Posted
技术标签:
【中文标题】将 MySQL 与实体框架一起使用 [关闭]【英文标题】:Using MySQL with Entity Framework [closed] 【发布时间】:2010-09-09 17:48:17 【问题描述】:在 Google 上找不到任何有关 Entity Framework/mysql 的信息,所以我希望有人知道。
【问题讨论】:
坦率地说,mysql 对 LINQ 的支持是垃圾!在过去的一周里,我一直在努力解决一些小问题:| ... 你用过dblinq code.google.com/p/dblinq2007吗? 【参考方案1】:它已发布 - 获取 MySQL connector for .Net v6.5 - 这支持 [实体框架]
我一直在等待这个,虽然支持是基本的,但适用于数据库交互的大多数基本场景。它还具有基本的 Visual Studio 集成。
更新 http://dev.mysql.com/downloads/connector/net/ 从 6.7 版开始,Connector/Net 将不再包含 MySQL for Visual Studio 集成。该功能现在可在名为 MySQL for Visual Studio 的单独产品中使用,该产品可使用适用于 Windows 的 MySQL 安装程序(请参阅http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html)。
【讨论】:
我想我会提到这里有最新版本(当前 6.2.2):mysql.com/downloads/connector/net 这个支持 EF4 和 VS2010 吗?我安装了连接器并尝试在 VS2010 中添加新连接,但 MySQL 未显示在提供程序列表中 我对 MySQL、EF4 和 VS2010 很好奇。 如果你有最新的连接器,它应该。由于 MySQL Entity 支持,我刚刚将我的产品移至 .NET4。工具和一切工作正常,但最大的问题是它为实际查询提供的底层支持。 Lamba 表达式存在很多问题,而您在使用 MSSQL 时不会遇到 当然,有新版本出来了。现在支持 EF5,版本 6.7.4:dev.mysql.com/downloads/connector/net/#downloads 另外,由于这个版本,包含 MySQL 服务器和其他工具的 VS 插件捆绑在一个包中:dev.mysql.com/tech-resources/articles/…【参考方案2】:查看我关于此主题的帖子。
http://pattersonc.com/blog/index.php/2009/04/01/using-mysql-with-entity-framework-and-aspnet-mvc-–-part-i/
【讨论】:
我修复了该链接的编码 - 用户现在可以直接点击,而不必复制/粘贴或选择/转到 链接失效 您可以通过此链接查看文章:pattersonc.com/blog/2009/04 将 MYSQL 与 EF 结合使用是否变得更好或仍然存在问题?如果 SQL Server 更可取,谁能准确指出为什么 SQL Server 更可取,因为它与 Microsoft 相同?【参考方案3】: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
【讨论】:
链接失效。【参考方案4】:这与 MS 和他们想要的无关。他们为其他人创建了一个 * 开放系统以插入“提供者”-postgres 和 sqlite 拥有它-mysql 只是滞后...但是,对于那些感兴趣的人来说,这是个好消息,我也在寻找这个并发现 MySql 连接器/Net 6.0 将拥有它...您可以在这里查看:
http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx
【讨论】:
我想知道当他们说“初始实体框架支持”时“初始”是什么意思。【参考方案5】:您需要 MySQL 的映射提供程序。这是 Entity Framework 需要额外的东西才能让魔法发生。 This blog 谈到除了微软提供的地图供应商之外的其他地图供应商。我没有发现任何提到 MySQL 的地方。
【讨论】:
是的,你是对的。我希望现在有东西准备好了。【参考方案6】:维塔纳,
当然现在有一些东西准备好了。 http://www.devart.com/products.html - 虽然它是商业的(你有 30 天的试用 IIRC)。他们以写作提供者为生,所以我想它应该又快又稳定。我知道真正的大公司使用他们的 Oracle 供应商,而不是使用 Orace 和 MS 供应商。
【讨论】:
感谢您的回复。 @Vintana,您可以在此处找到有关 dotConnect for MySQL 及其优势的更多信息devart.com/dotconnect/mysql。为了改进您使用 Entity Framework 实体的工作,我们提供了一个用于创建可视化模型的高级工具 - Entity Developer devart.com/entitydeveloper。【参考方案7】:小心使用连接器.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();
你会得到一个空引用异常:
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 标识,这解决了问题,但这不是正确的解决方案。
如果您使用较旧版本的 Connector.net(我使用的是 6.4.4),则不会出现此问题。
如果有人知道解决方案,请与我联系。
干杯!
Oware
【讨论】:
因为 p 为空,所以抛出错误。您必须首先创建对象的新空实例。 IE。人 p = 新人();不是人 p;所以:Person p = new Person()Name = "Oware"; context.Person.Add(p); context.SaveChanges();
抱歉忘记添加新行,即使添加新行,错误依旧出现
6.8.2 版本修复了该错误。 bugs.mysql.com/bug.php?id=70888 连接器/网络 6.8.3 已发布。 dev.mysql.com/downloads/connector/net【参考方案8】:
你也可以看看https://www.devart.com/dotconnect/mysql/
DevArt 的连接器支持 EF 和 MySQL。
【讨论】:
【参考方案9】:我没有看到这里的链接,但是有一个用于 MySql 的 beta .NET 连接器。点击“Development Releases”下载6.3.2 beta,已集成EF4/VS2010:
http://dev.mysql.com/downloads/connector/net/5.0.html#downloads
【讨论】:
【参考方案10】:如果您有兴趣在 mono/linux/macos 上使用 MySql 运行实体框架,这可能会有所帮助 https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/
【讨论】:
将 MYSQL 与 EF 结合使用是否变得更好或仍然存在问题?如果 SQL Server 更可取,谁能准确指出为什么 SQL Server 更可取,因为它与 Microsoft 相同? 我不确定现在情况如何,但由于缺乏功能并且整体不一致,我们的体验非常糟糕。 MS MSQL 绝对是更可取的,因为微软把它自己的堆栈放在首位。以上是关于将 MySQL 与实体框架一起使用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用哪些框架与 Google GWT 一起开发网络应用程序? [关闭]