Dapper.net Insert mssql unicode 乱码问题
Posted 代码艺术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dapper.net Insert mssql unicode 乱码问题相关的知识,希望对你有一定的参考价值。
1、效果:
2、处理方法:
/// <summary> /// insert single sql /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sql"></param> /// <param name="param"></param> /// <param name="connectionString"></param> /// <returns></returns> public static int Insert<T>(string sql, dynamic param = null, string connectionString = null) where T : class, new() { using (IDbConnection conn = OpenConnection(connectionString)) { return conn.Execute(sql, (object)param,null,null,null); } }
public static readonly string InsertSql = @"Insert into SpreadApiErrorMsgs(Id,ControllerName,ActionName,Message,SoluWay,CreateDate) values(@Id,@ControllerName,@ActionName,@Message,@SoluWay,@CreateDate)";
/// <summary> /// insert single sql /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sql"></param> /// <param name="param"></param> /// <param name="connectionString"></param> /// <returns></returns> public static int Insert<T>(string sql, dynamic param = null, string connectionString = null) where T : class, new() { using (IDbConnection conn = OpenConnection(connectionString)) { return conn.Execute(sql, (object)param,null,null,null); } }
PS:Dapper源码:
/// <summary> /// This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar /// </summary> sealed partial class DbString : Reasonable.Spread.Dapper.SqlMapper.ICustomQueryParameter { /// <summary> /// Create a new DbString /// </summary> public DbString() { Length = -1; } /// <summary> /// Ansi vs Unicode /// </summary> public bool IsAnsi { get; set; } /// <summary> /// Fixed length /// </summary> public bool IsFixedLength { get; set; } /// <summary> /// Length of the string -1 for max /// </summary> public int Length { get; set; } /// <summary> /// The value of the string /// </summary> public string Value { get; set; } /// <summary> /// Add the parameter to the command... internal use only /// </summary> /// <param name="command"></param> /// <param name="name"></param> public void AddParameter(IDbCommand command, string name) { if (IsFixedLength && Length == -1) { throw new InvalidOperationException("If specifying IsFixedLength, a Length must also be specified"); } var param = command.CreateParameter(); param.ParameterName = name; param.Value = (object)Value ?? DBNull.Value; if (Length == -1 && Value != null && Value.Length <= 4000) { param.Size = 4000; } else { param.Size = Length; } param.DbType = IsAnsi ? (IsFixedLength ? DbType.AnsiStringFixedLength : DbType.AnsiString) : (IsFixedLength ? DbType.StringFixedLength : DbType.String); command.Parameters.Add(param); } }
以上是关于Dapper.net Insert mssql unicode 乱码问题的主要内容,如果未能解决你的问题,请参考以下文章