在谷歌上找不到任何与实体框架/MySQL相关的东西,所以我希望有人知道它。
当前回答
MySQL需要一个映射提供程序。这是实体框架实现神奇效果所需要的额外东西。这篇博客讨论了除了微软提供的地图提供商之外的其他地图提供商。我没有发现任何提到MySQL。
其他回答
这与多发性硬化症和他们想要什么无关。他们已经为其他人创建了一个开放的系统来插件“提供商”——postgres和sqlite都有——mysql只是落后了……但是,对于那些感兴趣的人来说,好消息是,我也在寻找这个,并发现MySql连接器/Net 6.0将拥有它…你可以在这里查看:
http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx
看看我关于这个主题的帖子。
http://pattersonc.com/blog/index.php/2009/04/01/using-mysql-with-entity-framework-and-aspnet-mvc--part-i/
小心使用连接器。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
如果你有兴趣在mono/linux/macos上运行实体框架和MySql,这可能会有帮助 https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/
你也可以看看https://www.devart.com/dotconnect/mysql/
DevArt的连接器支持EF和MySQL。
推荐文章
- 按类型查找WPF窗口中的所有控件
- 数组与列表的性能
- 从Description属性中获取Enum
- MySQL对重复键更新在一个查询中插入多行
- 为什么使用try {} finally{}和一个空的try块?
- 如何在c#中创建一个数据表,以及如何添加行?
- 如何在内存中获取对象大小?
- 每个优秀的。net开发人员都应该能够回答的问题?
- 如何编辑。csproj文件
- EscapeUriString和EscapeDataString的区别是什么?
- mysql_connect():[2002]没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接)在
- MySQL:如何复制行,但改变几个字段?
- 不能删除或更新父行:外键约束失败
- 在c++ /CLI中插入号(' ^ ')是什么意思?
- 什么时候应该使用TaskCompletionSource<T> ?