2

Mac OS で Mono/MonoDevelop を使用しています。MySQL データベースでの LINQ-to-SQL に SqlMetal (Mono に含まれる DbLinq バージョン) を使用する例が必要です。

奇妙なことに、SQLite の例はたくさん見つかりましたが、MySQL の例はありませんでした。MySQL で見つかった例は、Microsoft の SqlMetal.exe を参照しているようです。

SQLite からの sqlmetal コマンドを MySQL 用に調整しようとしましたが、次のメッセージが表示されます。

sqlmetal: databaseConnectionType タイプ 'ByteFX.Data.MySqlClient.MySqlConnection, ByteFX.Data' をロードできませんでした。--with-dbconnection=TYPE オプションを使用してみてください。

助けていただければ幸いです。ありがとうございました。

4

3 に答える 3

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をインストールしています)

よろしく

于 2011-04-09T13:41:51.213 に答える
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. ステップ2のフォルダーのプロパティを使用して、BlackR2Dの回答に従ってノードの属性を 開き/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/4.0/sqlmetal.exe.config(または使用しているバージョンの同等のもの)、編集します。databaseConnection<provider name="MySQL"Version=6.6.5.0PublicKeyToken=c5687fc88969c44d

  4. 実行中のプロジェクトへのパスにスペースが含まれていないことを確認してください。そうしないと、「MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: ファイルが見つかりませんでした」というエラーが発生する可能性があります

  5. 「Linq クラスの生成」を選択した場合、言語を C#2 ではなく C# に変更します。そうしないと、「MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生する場合があります。

その後、Output.cs を生成できますが、DBML (Output.dbml) を生成しようとするとエラーが発生します。

'MonoDevelop.Database.Sql.SqlMetalExecException: sqlmetal: Access to the path "//Output.dbml" is denied'
于 2013-06-12T15:19:06.100 に答える
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
于 2011-06-26T21:56:52.580 に答える