本文说的是我在测试LinqToMysql发现的问题
客户端配置在App.config中的节点
<connectionStrings>
<add name="new_schema_firdbEntities" connectionString="metadata=res://*/FaceEntityModel.csdl|res://*/FaceEntityModel.ssdl|res://*/FaceEntityModel.msl;provider=MySql.Data.MySqlClient;provider connection string= "server=localhost;user id=root;persistsecurityinfo=True;password=;database=new_schema_firdb "" providerName="System.Data.EntityClient"/></connectionStrings>
其中DB连接是从EF的配置节点中直接拷贝到客户端的
我在CS端代码中用到new_schema_firdbEntities db=new new_schema_firdbEntities("连接字符串"),(这里的类new_schema_firdbEntities继承自DbContext,EF自动生成的)连接字符串如果是
string connectionString = ConfigurationManager.ConnectionStrings["new_schema_firdbEntities"].ConnectionString;这里的变量connectionString 则可以正常连接数据库;
如果连接字符串是connectionString ="metadata=res://*/FaceEntityModel.csdl|res://*/FaceEntityModel.ssdl|res://*/FaceEntityModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;persistsecurityinfo=True;password=;database=new_schema_firdb"",则访问数据库会失败,会提示错误“不识别关键字server”,把人引入歧途。
抓耳挠腮,测试良久,同样的字符串,测试结果怎么会前者行得通,后者就不行呢,难道连接字符串不一样?
我调试后发现前者会把"转译成\,而后者保持原样,DB构造方法生成实例时,后者连接字符串含特殊字符,导致部分字符串截断,因此会访问数据库失败。。。,真是让人蛋疼。
连接字符串记得要转译。