单声道的 SqlParameter 中的西里尔值插入错误

Cyrillic value insert error in SqlParameter on mono

如果我在带有西里尔字符的@Name 字符串中使用 as 值,下一个代码片段将引发异常。如果我使用拉丁字符,它工作正常。在 Windows 带有 .Net 4.0 的主机上工作正常。但是在 Ubuntu 14.04 上最后一个单声道它有错误。 SQL 服务器 MS SQL 2014.

StringBuilder sb = new StringBuilder();
            sb.AppendLine("INSERT INTO [MyTable]([Name],[ID]) ");
            sb.AppendLine("VALUES(");
            sb.Append("@Name, ");
            sb.Append("@ID)");
            SqlConnection sqlConnection =
                new SqlConnection(connStr);
            try
            {
                sqlConnection.Open();
                SqlCommand sqlCommand = new SqlCommand(sb.ToString(), sqlConnection);

                SqlParameter sqlParameter = null;

                var msg = "Имя";
                sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");
                sqlParameter.Value = msg;
                sqlCommand.Parameters.Add(sqlParameter);

                sqlParameter = new SqlParameter("@ID", SqlDbType.BigInt, 0, "ID");
                sqlParameter.Value = 39;
                sqlCommand.Parameters.Add(sqlParameter);

                sqlCommand.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                var a = 0;
            }
            finally
            {
                sqlConnection.Close();
            }

尝试

sqlParameter = new SqlParameter("@Name", SqlDbType.NVarChar, 0, "Name");

而不是

sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");