使用MySQL与entity framework
在Google上找不到与entity framework/ MySQL相关的任何东西,所以我希望有人知道。
它已被释放 – 获得.Net v6.5的MySQL连接器 – 这支持[entity framework]
我一直在等待,尽pipe支持是基本的,适用于大部分基本的数据库交互场景。 它也有基本的Visual Studio集成。
UPDATE http://dev.mysql.com/downloads/connector/net/从版本6.7开始,Connector / Net将不再包含用于Visual Studio集成的MySQL。 该function现在可以在一个名为MySQL for Visual Studio的独立产品中使用MySQL的Windows安装程序(请参阅http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html )。
看看我的post在这个问题上。
MySQL将在几天内主持一个关于EF的networking研讨会…看这里: http : //www.mysql.com/news-and-events/web-seminars/display-204.html
编辑:该networking研讨会现在在http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html
这不是关于MS和他们想要的。 他们已经创build了一个开放的系统,让其他人可以插入提供程序 – postgres和sqlite有它 – mysql只是laggin …但是,对于那些有兴趣的人来说,我也在寻找这个好消息,发现MySql连接器/净6.0将有它…你可以看看这里:
http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx
你需要一个MySQL的映射提供者。 这是entity framework需要使魔术发生的额外事情。 除了微软提供的这个博客外, 这个博客还谈到了其他地图提供商 我还没有发现MySQL的任何提及。
Vintana餐厅,
当然,现在有一些东西准备好了。 http://www.devart.com/products.html – 这是商业,但(你有一个30天的IIRC审判)。 他们以写作提供者为生,所以我认为它应该是快速和稳定的。 我知道真正的大公司使用他们的Oracle提供者而不是Orace和MS。
这个MySQL教程展示了如何生成和使用EF实体作为控件的数据源。
你也可以看看http://www.devart.com/
他们有支持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();
你会得到一个空引用例外:
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()
直到现在我还没有find一个解决scheme,我不得不改变我的tinyint身份为unsigned int身份,这解决了这个问题,但这不是正确的解决scheme。
如果你使用旧版本的Connector.net(我使用6.4.4),你不会有这个问题。
如果有人知道解决scheme,请与我联系。
干杯!
西非播棋
我没有看到这里的链接,但有一个testing版的.NET连接器MySql。 点击“开发版本”下载6.3.2testing版,其中EF4 / VS2010集成:
http://dev.mysql.com/downloads/connector/net/5.0.html#downloads
如果你有兴趣在mono / linux / macos上用MySql运行entity framework,这可能会有所帮助https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/