在谷歌上找不到任何与实体框架/MySQL相关的东西,所以我希望有人知道它。


当前回答

小心使用连接器。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

其他回答

它已经发布了-获得。net v6.5的MySQL连接器-它支持 (实体框架)

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

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

小心使用连接器。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

Vintana,

当然有现成的了。http://www.devart.com/products.html -虽然它是商业的(你有一个30天的试用IIRC)。他们靠写作为生,所以我想它应该又快又稳定。我知道一些大公司使用他们的Oracle供应商而不是Orace和MS。

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

DevArt的连接器支持EF和MySQL。

这与多发性硬化症和他们想要什么无关。他们已经为其他人创建了一个开放的系统来插件“提供商”——postgres和sqlite都有——mysql只是落后了……但是,对于那些感兴趣的人来说,好消息是,我也在寻找这个,并发现MySql连接器/Net 6.0将拥有它…你可以在这里查看:

http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx