Mysql 数据库连接字符串和排序规则
是否可以在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;
SET COLLATION\u CONNECTION
,因为我使用的是实体框架,它可以为我执行所有调用,正如您在编辑中看到的那样,这些调用并不完全正确"User id=dbuser;Password=dbpass;Host=dbserver;Database=testung;Collation=utf8_general_ci"
但是,排序规则
设置/变量无法识别
使用的技术
- Asp.NETMVC2
- IIS 7
- 实体框架1
- DevArt dotConnect MySql连接器
- MySql 5.1
我们建议您实现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();
}