我在Mac上使用Mono/MonoDe信封,我想要一个使用SqlMetal (随Mono一起包含的DbLinq版本)用于LINQ和MySQL数据库的示例。
奇怪的是,我为SQLite找到了许多例子,但MySQL却没有。为MySQL找到的例子似乎是指微软的SqlMetal.exe。
我试图安排来自SQLite的SQLite命令,使其适合MySQL,但我有一条消息:
sqlmetal:无法加载databaseConnectionType类型'ByteFX.Data.MySqlClient.MySqlConnection,ByteFX.Data‘。尝试使用--=TYPE选项。
我们很感激你的帮助!谢谢。
发布于 2011-04-09 13:41:51
找到并编辑您的sqlmetal.exe.config,并替换不使用ByteFX (长时间不受支持)的设置,并使用MySql.Data。
记住要包括完全限定的程序集名称,在我的示例中,这一行如下所示:
`provider name="MySQL" dbLinqSchemaLoader="DbLinq.MySql.MySqlSchemaLoader, System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" databaseConnection="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.2.3.0, Culture=neutral, PublicKeyToken=2f3544035097bf97"` (我安装了带有该版本和令牌的MySql连接器)
问候
发布于 2013-06-12 15:19:06
cd MySql.Data.dll
/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/gac/MySql.Data (或更改版本号以与您使用的版本匹配),您应该看到目录,如6.6.5.0__c5687fc88969c44d
/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/4.0/sqlmetal.exe.config (或与您使用的版本等效),并根据BlackR2D的答案编辑<provider name="MySQL"节点的databaseConnection属性,使用步骤2中文件夹中的属性(例如,PublicKeyToken=c5687fc88969c44d
Version=6.6.5.0 ),可以确保您正在运行的项目的路径中没有空格,或者当您选择'Generate‘时,无法找到文件’error
‘实例的'MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: Object引用
然后,我可以生成Output.cs,但是如果试图生成DBML (Output.dbml),仍然会得到一个错误:
'MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: Access to the path "//Output.dbml" is denied'发布于 2011-06-26 21:56:52
我在mono 2.10.2上做了这个工作:
[mono-] ~ @ sqlmetal /namespace:MonoService /provider:MySql "/conn:Server=[server];Database=[db];Uid=[name];Pwd=[pass];" /code:ProxyContext.cs --with-dbconnection="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"在我将MySql.Data放入gac之前:
gacutil -i MySql.Data.dllhttps://stackoverflow.com/questions/5163585
复制相似问题