2

新しい接続に使用されるサーバーにはデフォルト設定があるため、MySql接続文字列内で接続照合を設定することは可能ですか?

ができない2つのこと:

  1. SET COLLATION_CONNECTION 編集でわかるように、すべての呼び出しを完全に真ではないEntity Frameworkを使用しているため、接続を開いた後に呼び出すことができません
  2. 他のデータベースとそれらを使用するそれらの尊敬されるアプリケーションのために、サーバーのデフォルトの接続照合を変更することはできません。

指定したいのは、次のようなweb.configファイルの特定の接続文字列パラメーターだけです。

"User id=dbuser;Password=dbpass;Host=dbserver;Database=testung;Collation=utf8_general_ci"

しかし、Collation設定/変数は認識されません。

使用したテクノロジー

  • Asp.net MVC 2
  • IIS 7
  • Entity Framework 1
  • DevArtdotConnectMySqlコネクタ
  • MySql 5.1

編集1

@Devartが提案したようにこのコードを試しましたが、役に立ちませんでした

partial void OnContextCreated()
{
    System.Data.Common.DbCommand command = this.Connection.CreateCommand();
    command.CommandText = "set collation_connection = utf8_slovenian_ci;";
    command.CommandType = System.Data.CommandType.Text;
    this.Connection.Open();
    command.ExecuteNonQuery();
    // this.Connection.Close();
}
4

2 に答える 2

1

OnContextCreated部分メソッドを実装することをお勧めします。
その中のストア接続にアクセスでき、この接続を使用してADO.NETコマンド「SETCOLLATION=...」を実行できます。

于 2010-01-27T09:12:52.960 に答える
0

他の誰かがこの問題に遭遇した場合、または接続を開くときにコマンドを発行したい場合:メソッドが存在しないかサポートされなくなったため、OnContextCreatedに関する回答は機能しなくなりました。

私が実行に使用する別の方法は、接続文字列SET NAMES <character set used by the database>に追加することです。;initialization command=\"SET NAMES '" + CharSet + "';\"Devartのドキュメントによると、これはPostgreSQLMSSQL、およびOracleでも機能します。

このプロパティは、データベース接続のプロパティにアクセスしてAdvancedボタンをクリックするときに、EntityDeveloper内で設定することもできます。

于 2017-02-24T13:24:34.860 に答える