2008-09-16 65 views
253

在Google上找不到与实体框架/ MySQL相关的任何内容,所以我希望有人知道它。在实体框架中使用MySQL

+8

坦白说,对LINQ MySQL的支持是扯淡!我在最后一周的小问题上b:不安:| ... – effkay 2009-12-25 07:04:18

+1

是否使用过dblinq http://code.google.com/p/dblinq2007/? – Sharique 2010-07-14 07:34:39

回答

4

您需要MySQL的映射提供程序。这是Entity Framework需要使魔术发生的额外事情。 This blog谈到除了微软提供的其他地图提供商。我还没有发现MySQL的任何提及。

+0

是的,你说得对。我希望现在有一些东西准备好了。 – vintana 2008-09-16 20:58:17

7

这不是MS和他们想。他们已经为其他人创建了一个*开放系统来插件'提供者' - postgres和sqlite拥有它 - mysql只是laggin ...但对于那些感兴趣的人来说这是个好消息,我也在寻找这个,发现MySql连接器/净6.0将有它...您可以点击此处查看:

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

+1

我想知道当他们说“初始实体框架支持”时,“初始”是什么意思。 – vintana 2009-03-26 13:36:23

187

它被释放 - 获取MySQL connector for .Net v6.5 - 这对 [实体框架]支持

我等待这整个过程中,虽然支持是基础,适用于大多数基本方案的数据库交互。它还具有基本的Visual Studio集成。

UPDATE http://dev.mysql.com/downloads/connector/net/ 6.7版本开始,连接器/网络将不再包括了MySQL的Visual Studio集成。该功能现在可以在名为MySQL for Visual Studio的独立产品中使用MySQL Installer for Windows使用(请参阅http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html)。

+0

感谢您的更新,我正在等待同样的事情! – 2009-06-06 14:25:26

2

Vintana,

当然有一些东西准备好了。虽然(你有30天的IIRC试用版),但它是商业用途。他们是写作提供者的生活者,所以我认为它应该是快速和稳定的。我知道真正的大公司使用他们的Oracle提供者而不是Orace和MS。

1

请小心使用connector .net,Connector 6.6。5有一个bug,它不工作插入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),则不会出现此问题。

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

干杯!

西非播棋