FineUI 官方论坛

标题: AppBox开源版如何使用MySQL作为数据库? [打印本页]

作者: Mr.Wu    时间: 2014-11-8 16:32
标题: AppBox开源版如何使用MySQL作为数据库?
AppBox开源版默认使用MS Sqlserver 作为后台数据库。
web.config也有一个连接字条串写上MySQL,但是无法直接使用该连接串。
请问一下要怎么修改呢?
是否需要其它dll支持?
appbox是否兼容不同类型的数据库?

作者: sanshi    时间: 2014-11-9 17:04
这个需要查下EntityFramework的官方文档,MySQL需要下载单独的DLL支持
作者: TsungKang    时间: 2015-1-15 03:28
使用NuGet管理器下载并安装MySql.Data和MySql.Data.Entity 2个程序集

nuget会自动帮你配置好Web.Config里面的相关内容

这时候直接运行项目仍然会报错,因为SqlServer的字段配置不适用于MySql

找到Context类,在

public class AppBoxContext : DbContext

上方加入[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]

再次运行项目,OK,运行正常
作者: Mr.Wu    时间: 2015-1-15 09:24
TsungKang 发表于 2015-1-15 03:28
使用NuGet管理器下载并安装MySql.Data和MySql.Data.Entity 2个程序集

nuget会自动帮你配置好Web.Config里 ...

你说的这个我试过了,编译是没问题了,只是打开Appbox相关页面时,个别页面还是会报错,怕怕
作者: TsungKang    时间: 2015-2-6 09:41
Mr.Wu 发表于 2015-1-15 09:24
你说的这个我试过了,编译是没问题了,只是打开Appbox相关页面时,个别页面还是会报错,怕怕 ...

我仔细研究了一下,如果需要完全移植的确是需要修改很多地方,例如user.aspx中的删除用户

原代码为
DB.Users.Where(u => u.ID == userID).Delete();
,如果执行就会造成错误。

如果尝试将这句代码修改为
DB.Users.Remove(DB.Users.Single(u => u.ID == userID)); DB.SaveChanges();


再次执行删除用户就不会出现错误。

2句代码产生了不同的SQL语句,但是我不是很清楚前者生成的INNER JOIN为什么会导致MySQL报错。
作者: sanshi    时间: 2015-2-6 10:43
TsungKang 发表于 2015-2-6 09:41
我仔细研究了一下,如果需要完全移植的确是需要修改很多地方,例如user.aspx中的删除用户

原代码为,如 ...

可能还是 Mysql 的那个 Provider 自身的 BUG,这么看来 EntityFramework 对 Mysql 的支持还是不行.....




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4