当前位置:首页> 正文

关于.net:将MySQL与Entity Framework结合使用

关于.net:将MySQL与Entity Framework结合使用

Using MySQL with Entity Framework

在Google上找不到与Entity Framework / MySQL相关的任何内容,所以我希望有人知道它。


它已经发布 - 获取.Net v6.5的MySQL连接器 - 这有支持
[实体框架]

我一直在等待这个,尽管支持是基本的,适用于db交互的大多数基本场景。它还具有基本的Visual Studio集成。

UPDATE
http://dev.mysql.com/downloads/connector/net/
从版本6.7开始,Connector / Net将不再包含用于Visual Studio集成的MySQL。该功能现在可以在一个名为MySQL for Visual Studio的单独产品中使用,该产品可以使用MySQL Installer for Windows(参见http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html)。


看看我关于这个主题的帖子。

http://pattersonc.com/blog/index.php/2009/04/01/using-mysql-with-entity-framework-and-aspnet-mvc---part-i/


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


这不是关于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的映射提供程序。这是实体框架需要使魔术发生的额外事情。这篇博客讨论了微软提供的其他地图提供商。我还没有找到任何关于MySQL的提及。


Vintana餐厅,

Od当然,现在有一些东西准备好了。 http://www.devart.com/products.html - 它虽然是商业版(你有一个30天的试用版IIRC)。他们以写作提供者为生,所以我想它应该快速而稳定。我知道真正的大公司使用他们的Oracle提供商而不是Orace和MS提供商。


小心使用连接器.net,连接器6.6.5有一个错误,它不能用于将tinyint值作为标识插入,例如:

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

如果您尝试插入这样的对象:

1
2
3
4
5
Person p;
p = new Person();
p.Name = 'Oware'
context.Person.Add(p);
context.SaveChanges();

您将获得Null参考例外:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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),您将不会遇到此问题。

如果有人知道解决方案,请与我联系。

干杯!

西非播棋


您也可以查看https://www.devart.com/dotconnect/mysql/

DevArt的连接器支持EF和MySQL。


如果您有兴趣在mono / linux / macos上运行带有MySql的Entity Framework,这可能会有所帮助
Entity Framework with MySql on Mac Os


我没有在这里看到链接,但是有一个用于MySql的beta .NET Connector。点击"开发版本"下载6.3.2 beta,其中包含EF4 / VS2010集成:

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


展开全文阅读

相关内容