如何在Mac上使用DbLinq SqlMetal for MySQL?

时间:2011-03-02 05:02:58

标签: mysql linq-to-sql mono sqlmetal

我在Mac OS上使用Mono / MonoDevelop,我想要一个使用SqlMetal(Mono附带的DbLinq版本)用于LINQ-to-SQL和MySQL数据库的示例。

奇怪的是,我发现了很多关于SQLite的例子,但没有找到MySQL的例子。 MySQL的示例似乎是指Microsoft的SqlMetal.exe。

我尝试从SQLite安排我的sqlmetal命令以使其适应MySQL,但我有这样的信息:

  

sqlmetal:无法加载databaseConnectionType类型'ByteFX.Data.MySqlClient.MySqlConnection,ByteFX.Data'。尝试使用--with-dbconnection = TYPE选项。

感谢帮助!谢谢。

3 个答案:

答案 0 :(得分:3)

查找并编辑sqlmetal.exe.config并将设置替换为不使用ByteFX(LONG不支持)并使用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 Connector)

此致

答案 1 :(得分:1)

  1. 按照http://www.mono-project.com/MySQL

    下载并安装MySQL Connector / Net
    cd path_to_your MySql.Data.dll assembly
    gacutil -i MySql.Data.dll
    
  2. 浏览到/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/gac/MySql.Data(或更改版本号以匹配您正在使用的版本),您应该会看到6.6.5.0__c5687fc88969c44d

  3. 等目录
  4. 打开/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/4.0/sqlmetal.exe.config(或您正在使用的版本的等效文件)并根据BlackR2D的答案编辑databaseConnection节点的<provider name="MySQL"属性,使用例如,步骤2中的文件夹Version=6.6.5.0PublicKeyToken=c5687fc88969c44d

  5. 确保您正在运行的项目的路径中没有空格,否则您可能会收到'MonoDevelop.Database.Sql.SqlMetalExecException:sqlmetal:找不到文件'错误

  6. 当您选择“Generate Linq Class”时,将语言更改为C#而不是C#2,否则您可能会收到'MonoDevelop.Database.Sql.SqlMetalExecException:sqlmetal:对象引用未设置为对象的实例'错误

  7. 然后我可以生成Output.cs,但是在尝试生成DBML(Output.dbml)时仍然会出错:

    'MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: Access to the path "//Output.dbml" is denied'
    

答案 2 :(得分:0)

我使用单声道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.dll