Update Core

This commit is contained in:
sunkaixuan
2017-08-28 02:40:49 +08:00
parent d9544271ee
commit c2e7ed6056
5 changed files with 73 additions and 24 deletions

View File

@@ -26,7 +26,10 @@ namespace SqlSugar
{
try
{
dic.Add(reader.GetName(i), reader.GetValue(i));
var addItem = reader.GetValue(i);
if (addItem == DBNull.Value)
addItem = null;
dic.Add(reader.GetName(i), addItem);
}
catch
{
@@ -66,7 +69,10 @@ namespace SqlSugar
{
try
{
result.Add(reader.GetName(i), reader.GetValue(i));
var addItem = reader.GetValue(i);
if (addItem == DBNull.Value)
addItem = null;
result.Add(reader.GetName(i), addItem);
}
catch
{
@@ -166,7 +172,10 @@ namespace SqlSugar
var key = typeName + "." + name;
if (readerValues.ContainsKey(key))
{
result.Add(name, readerValues[key]);
var addItem = readerValues[key];
if (addItem == DBNull.Value)
addItem = null;
result.Add(name, addItem);
}
}
}
@@ -192,12 +201,8 @@ namespace SqlSugar
/// <returns></returns>
public T DeserializeObject<T>(string value)
{
if (value.IsValuable())
{
value = value.Replace(":{}", ":null");
}
var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
return JsonConvert.DeserializeObject<T>(value,jSetting);
return JsonConvert.DeserializeObject<T>(value, jSetting);
}
#endregion
@@ -229,7 +234,10 @@ namespace SqlSugar
childRow = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
childRow.Add(col.ColumnName, row[col]);
var addItem = row[col];
if (addItem == DBNull.Value)
addItem = null;
childRow.Add(col.ColumnName, addItem);
}
deserializeObject.Add(childRow);
}

View File

@@ -1,9 +1,45 @@
namespace SqlSugar
using System;
using System.Text.RegularExpressions;
using System.Linq;
namespace SqlSugar
{
public interface IDataAdapter
{
void Fill(DataSet ds);
}
public partial class SqliteProvider : AdoProvider
{
public override void ExecuteBefore(string sql, SugarParameter[] parameters)
{
if (sql.IsValuable() && parameters.IsValuable())
{
foreach (var parameter in parameters)
{
//Compatible with.NET CORE parameters case
var name = parameter.ParameterName;
if (!sql.Contains(name) && Regex.IsMatch(sql, "(" + name + "$)" + "|(" + name + @"[ ,\,])", RegexOptions.IgnoreCase))
{
parameter.ParameterName = Regex.Match(sql, "(" + name + "$)" + "|(" + name + @"[ ,\,])", RegexOptions.IgnoreCase).Value;
}
}
}
if (this.IsEnableLogEvent)
{
Action<string, string> action = LogEventStarting;
if (action != null)
{
if (parameters == null || parameters.Length == 0)
{
action(sql, null);
}
else
{
action(sql, this.Context.RewritableMethods.SerializeObject(parameters.Select(it => new { key = it.ParameterName, value = it.Value.ObjToString() })));
}
}
}
}
}
}
namespace System.Data.Sqlite {

View File

@@ -176,27 +176,32 @@ namespace SqlSugar
}, (cm, key) =>
{
string sql = "select * from " + tableName + " limit 0,1";
string sql = "PRAGMA table_info(" + tableName + ")";
var oldIsEnableLog = this.Context.Ado.IsEnableLogEvent;
this.Context.Ado.IsEnableLogEvent = false;
using (DbDataReader reader = (SqliteDataReader)this.Context.Ado.GetDataReader(sql))
using (DbDataReader dataReader = (SqliteDataReader)this.Context.Ado.GetDataReader(sql))
{
this.Context.Ado.IsEnableLogEvent = oldIsEnableLog;
List<DbColumnInfo> result = new List<DbColumnInfo>();
var schemaTable = reader.GetSchemaTable();
foreach (DataRow row in schemaTable.Rows)
while (dataReader.Read())
{
var type = dataReader.GetValue(2).ObjToString();
var length = 0;
if (type.Contains("("))
{
type = type.Split('(').First();
length = type.Split('(').Last().TrimEnd(')').ObjToInt();
}
DbColumnInfo column = new DbColumnInfo()
{
TableName = tableName,
DataType = row["DataTypeName"].ToString().Trim(),
IsNullable = (bool)row["AllowDBNull"],
IsIdentity = (bool)row["IsAutoIncrement"],
DataType = type,
IsNullable = !dataReader.GetBoolean(3),
IsIdentity = dataReader.GetBoolean(3) && dataReader.GetBoolean(5).ObjToBool() && (type.IsIn("integer", "int", "int32", "int64", "long")),
ColumnDescription = null,
DbColumnName = row["ColumnName"].ToString(),
DefaultValue = row["defaultValue"].ToString(),
IsPrimarykey = (bool)row["IsKey"],
Length = Convert.ToInt32(row["ColumnSize"])
DbColumnName = dataReader.GetString(1),
DefaultValue = dataReader.GetValue(4).ObjToString(),
IsPrimarykey = dataReader.GetBoolean(5).ObjToBool(),
Length = length
};
result.Add(column);
}

View File

@@ -8,6 +8,6 @@ namespace OrmTest
{
public class Config
{
public static string ConnectionString = @"DataSource=D:\MyGit\SqlSugar\Src\Asp.NetCore2\SqlSeverTest\SqliteTest\DataBase\SqlSugar4xTest.sqlite";
public static string ConnectionString = @"DataSource=F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\Src\Asp.NetCore2\SqlSeverTest\SqliteTest\DataBase\SqlSugar4xTest.sqlite";
}
}