mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
@ -90,15 +90,24 @@ namespace FreeSql.SqlServer
|
||||
return string.Concat("'", ((DateTimeOffset)param).ToString("yyyy-MM-dd HH:mm:ss.fff zzzz"), "'");
|
||||
}
|
||||
#if net60
|
||||
else if (param is DateOnly || param is DateOnly?)
|
||||
else if (param is DateOnly)
|
||||
{
|
||||
var result = AddslashesTypeHandler(typeof(DateOnly), param);
|
||||
if (result != null) return result;
|
||||
if (param.Equals(DateOnly.MinValue) == true) param = new DateOnly(1970, 1, 1);
|
||||
return string.Concat("'", ((DateOnly)param).ToString("yyyy-MM-dd"), "'");
|
||||
}
|
||||
else if (param is DateOnly?)
|
||||
{
|
||||
var result = AddslashesTypeHandler(typeof(DateOnly?), param);
|
||||
if (result != null) return result;
|
||||
if (param.Equals(DateOnly.MinValue) == true) param = new DateOnly(1970, 1, 1);
|
||||
return string.Concat("'", ((DateOnly)param).ToString("yyyy-MM-dd"), "'");
|
||||
}
|
||||
else if (param is TimeOnly || param is TimeOnly?)
|
||||
{
|
||||
var ts = (TimeOnly)param;
|
||||
return $"'{ts.Hour}:{ts.Minute}:{ts.Second}.{ts.Millisecond}'";
|
||||
return $"'{ts.Hour}:{ts.Minute}:{ts.Second}'";
|
||||
}
|
||||
#endif
|
||||
else if (param is TimeSpan || param is TimeSpan?)
|
||||
|
@ -38,7 +38,7 @@ namespace FreeSql.SqlServer
|
||||
{ typeof(DateTime).FullName, CsToDb.New(SqlDbType.DateTime, "datetime", "datetime NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?).FullName, CsToDb.New(SqlDbType.DateTime, "datetime", "datetime", false, true, null) },
|
||||
{ typeof(DateTimeOffset).FullName, CsToDb.New(SqlDbType.DateTimeOffset, "datetimeoffset", "datetimeoffset NOT NULL", false, false, new DateTimeOffset(new DateTime(1970,1,1), TimeSpan.Zero)) },{ typeof(DateTimeOffset?).FullName, CsToDb.New(SqlDbType.DateTimeOffset, "datetimeoffset", "datetimeoffset", false, true, null) },
|
||||
#if net60
|
||||
{ typeof(TimeOnly).FullName, CsToDb.New(SqlDbType.Time, "time", "time NOT NULL", false, false, 0) },{ typeof(TimeOnly?).FullName, CsToDb.New(SqlDbType.Time, "time", "time", false, true, null) },
|
||||
{ typeof(TimeOnly).FullName, CsToDb.New(SqlDbType.Time, "time", "time NOT NULL", false, false, TimeOnly.MinValue) },{ typeof(TimeOnly?).FullName, CsToDb.New(SqlDbType.Time, "time", "time", false, true, null) },
|
||||
{ typeof(DateOnly).FullName, CsToDb.New(SqlDbType.Date, "date", "date NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateOnly?).FullName, CsToDb.New(SqlDbType.Date, "date", "date", false, true, null) },
|
||||
#endif
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using FreeSql.Internal.CommonProvider;
|
||||
using FreeSql.Internal;
|
||||
using FreeSql.Internal.CommonProvider;
|
||||
using FreeSql.SqlServer.Curd;
|
||||
using System;
|
||||
using System.Data.Common;
|
||||
@ -14,6 +15,10 @@ namespace FreeSql.SqlServer
|
||||
{
|
||||
if (Interlocked.Exchange(ref _firstInit, 0) == 1) //不能放在 static ctor .NetFramework 可能报初始化类型错误
|
||||
{
|
||||
#if net60
|
||||
Utils.dicExecuteArrayRowReadClassOrTuple[typeof(DateOnly)] = true;
|
||||
Utils.dicExecuteArrayRowReadClassOrTuple[typeof(TimeOnly)] = true;
|
||||
#endif
|
||||
Select0Provider._dicMethodDataReaderGetValue[typeof(Guid)] = typeof(DbDataReader).GetMethod("GetGuid", new Type[] { typeof(int) });
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,10 @@ namespace FreeSql.SqlServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
|
||||
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
else if (value?.Equals(DateTimeOffset.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
#if net60
|
||||
else if (value?.Equals(DateOnly.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
#endif
|
||||
var ret = new SqlParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
|
||||
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
if (tp != null) ret.SqlDbType = (SqlDbType)tp.Value;
|
||||
@ -52,6 +56,10 @@ namespace FreeSql.SqlServer
|
||||
Utils.GetDbParamtersByObject<DbParameter>(sql, obj, "@", (name, type, value) =>
|
||||
{
|
||||
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
else if (value?.Equals(DateTimeOffset.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
#if net60
|
||||
else if (value?.Equals(DateOnly.MinValue) == true) value = new DateTime(1970, 1, 1);
|
||||
#endif
|
||||
var ret = new SqlParameter { ParameterName = $"@{name}", Value = value };
|
||||
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
if (tp != null) ret.SqlDbType = (SqlDbType)tp.Value;
|
||||
|
Reference in New Issue
Block a user