Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库连接字符串和排序规则_Mysql_Asp.net Mvc 2_Connection String_Collation_Dotconnect - Fatal编程技术网

Mysql 数据库连接字符串和排序规则

Mysql 数据库连接字符串和排序规则,mysql,asp.net-mvc-2,connection-string,collation,dotconnect,Mysql,Asp.net Mvc 2,Connection String,Collation,Dotconnect,是否可以在MySql连接字符串中设置连接排序规则以及如何设置,因为服务器上有用于新连接的默认设置 有两件事我不能做: 打开连接后无法调用SET COLLATION\u CONNECTION,因为我使用的是实体框架,它可以为我执行所有调用,正如您在编辑中看到的那样,这些调用并不完全正确 无法更改服务器默认连接排序规则,因为其他数据库及其受尊重的应用程序正在使用它们 我只想在web.config文件中指定一个特定的连接字符串参数,如: "User id=dbuser;Password=dbpass;

是否可以在MySql连接字符串中设置连接排序规则以及如何设置,因为服务器上有用于新连接的默认设置

有两件事我不能做:

  • 打开连接后无法调用
    SET COLLATION\u CONNECTION
    ,因为我使用的是实体框架,它可以为我执行所有调用,正如您在编辑中看到的那样,这些调用并不完全正确
  • 无法更改服务器默认连接排序规则,因为其他数据库及其受尊重的应用程序正在使用它们
  • 我只想在web.config文件中指定一个特定的连接字符串参数,如:

    "User id=dbuser;Password=dbpass;Host=dbserver;Database=testung;Collation=utf8_general_ci"
    
    但是,
    排序规则
    设置/变量无法识别

    使用的技术
    • Asp.NETMVC2
    • IIS 7
    • 实体框架1
    • DevArt dotConnect MySql连接器
    • MySql 5.1
    编辑1 我已经按照@Devart的建议尝试了这段代码,但没有效果:


    我们建议您实现OnContextCreated分部方法

    您可以访问其中的存储连接,并且可以执行ADO.NET命令“SET COLLATION=…”使用此连接。

    如果其他任何人在打开连接时遇到此问题或希望发出命令:有关OnContextCreated的答案不再有效,因为该方法不再存在/不再受支持

    我用于执行
    集合名称
    的另一种方法是附加
    ;初始化命令=\“设置名称”+“字符集+”;\“
    到您的连接字符串。根据Devart的文档,这也适用于,以及


    当访问数据库连接的属性并单击
    Advanced
    按钮时,也可以在EntityDeveloper中设置此属性。

    这应该可以在您的框架中设置。你确定它没有相应的命令或设置吗?@Pekka:我添加了一个额外的标记,表明我正在使用Asp.net MVC和Entity Framework。我认为实体框架已经说明了这一点。如果不能设置服务器,可以在模式(db)或表级别设置它吗。我相信在mysql中两者都是可能的。@MindStaker:数据库、表和列级别的排序规则都设置正确。但MySql在连接到DB时也会应用连接排序规则,而不管模式上的设置如何。所以这是你必须考虑的另一个设置。好主意。我已经尝试过这样做,请检查我的编辑1。只需将“System.Data.Common.DbCommand command=this.Connection.CreateCommand();”行替换为“System.Data.Common.DbCommand command=(this.Connection as EntityConnection).StoreConnection.CreateCommand();”一行。只有在之后我不关闭连接时,此操作才有效。如果我关闭它(在我的上面代码中),我会得到排序错误。所以我想知道EF是否会在之后关闭它?在这种情况下,我不会太担心。但是如果它没有。。。我得自己关上它。关闭连接会导致排序规则丢失(在这种情况下,会话也会丢失)。执行查询后,EF将关闭连接。无论如何,在处置ObjectContext时,连接将被关闭。
    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();
    }