mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
Add CSharpTypeName to ConditionalModel
This commit is contained in:
parent
306e7792b1
commit
8cfdaa987f
@ -94,6 +94,7 @@
|
|||||||
<Compile Include="Models\OrderItem.cs" />
|
<Compile Include="Models\OrderItem.cs" />
|
||||||
<Compile Include="Demo\Demo0_SqlSugarClient.cs" />
|
<Compile Include="Demo\Demo0_SqlSugarClient.cs" />
|
||||||
<Compile Include="Models\ViewOrder.cs" />
|
<Compile Include="Models\ViewOrder.cs" />
|
||||||
|
<Compile Include="UnitTest\Models\Order.cs" />
|
||||||
<Compile Include="UnitTest\Models\TestModel.cs" />
|
<Compile Include="UnitTest\Models\TestModel.cs" />
|
||||||
<Compile Include="UnitTest\UCustom01.cs" />
|
<Compile Include="UnitTest\UCustom01.cs" />
|
||||||
<Compile Include="UnitTest\UCustom02.cs" />
|
<Compile Include="UnitTest\UCustom02.cs" />
|
||||||
|
18
Src/Asp.Net/SqlServerTest/UnitTest/Models/Order.cs
Normal file
18
Src/Asp.Net/SqlServerTest/UnitTest/Models/Order.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OrmTest.UnitTest.Models
|
||||||
|
{
|
||||||
|
[SqlSugar.SugarTable("UnitMyOrder")]
|
||||||
|
public class MYOrder
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
[SqlSugar.SugarColumn(Length = 18, DecimalDigits = 4)]
|
||||||
|
public decimal Price { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using SqlSugar;
|
using OrmTest.UnitTest.Models;
|
||||||
|
using SqlSugar;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -17,6 +18,27 @@ namespace OrmTest
|
|||||||
var data = db.GetSimpleClient<Order>().GetById(id);
|
var data = db.GetSimpleClient<Order>().GetById(id);
|
||||||
var x=db.Storageable(data).WhereColumns(it=>it.Price).ToStorage();
|
var x=db.Storageable(data).WhereColumns(it=>it.Price).ToStorage();
|
||||||
Check.Exception(x.UpdateList.Count == 0, "unit error");
|
Check.Exception(x.UpdateList.Count == 0, "unit error");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
db.CodeFirst.InitTables<MYOrder>();//建表
|
||||||
|
|
||||||
|
List<MYOrder> orders = new List<MYOrder>
|
||||||
|
{
|
||||||
|
new MYOrder
|
||||||
|
{
|
||||||
|
Name = "123",
|
||||||
|
Price =Convert.ToDecimal(10)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var x1 = db.Storageable(orders).WhereColumns(m => m.Price).ToStorage();
|
||||||
|
Console.WriteLine("insert:" + x1.InsertList.Count);
|
||||||
|
Console.WriteLine("update:" + x1.UpdateList.Count);
|
||||||
|
Console.WriteLine("------------");
|
||||||
|
x1.AsInsertable.ExecuteCommand();
|
||||||
|
Check.Exception( x1.AsUpdateable.ExecuteCommand()==0,"unit errors");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,12 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (type.IsIn(typeof(decimal), typeof(double)))
|
else if (type.IsIn(typeof(decimal), typeof(double)))
|
||||||
{
|
{
|
||||||
return value;
|
Expression<Func<SingleColumnEntity<object>, object>> exp = it => Convert.ToDecimal(it.ColumnName);
|
||||||
|
var result = queryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetResultString();
|
||||||
|
result = Regex.Replace(result, @"\[ColumnName\]", formatBuilder.FormatValue(value) + "", RegexOptions.IgnoreCase);
|
||||||
|
result = Regex.Replace(result, @"\`ColumnName\`", formatBuilder.FormatValue(value) + "", RegexOptions.IgnoreCase);
|
||||||
|
result = Regex.Replace(result, @"""ColumnName""", formatBuilder.FormatValue(value) + "", RegexOptions.IgnoreCase);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
else if (type.IsIn(typeof(DateTime)))
|
else if (type.IsIn(typeof(DateTime)))
|
||||||
{
|
{
|
||||||
|
@ -221,6 +221,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
FieldName = item.DbColumnName,
|
FieldName = item.DbColumnName,
|
||||||
ConditionalType = ConditionalType.Equal,
|
ConditionalType = ConditionalType.Equal,
|
||||||
|
CSharpTypeName=UtilMethods.GetTypeName(value),
|
||||||
FieldValue = value + "",
|
FieldValue = value + "",
|
||||||
FieldValueConvertFunc=this.Context.CurrentConnectionConfig.DbType==DbType.PostgreSQL?
|
FieldValueConvertFunc=this.Context.CurrentConnectionConfig.DbType==DbType.PostgreSQL?
|
||||||
UtilMethods.GetTypeConvert(value):null
|
UtilMethods.GetTypeConvert(value):null
|
||||||
|
@ -363,9 +363,17 @@ namespace SqlSugar
|
|||||||
private static object GetFieldValue(ConditionalModel item)
|
private static object GetFieldValue(ConditionalModel item)
|
||||||
{
|
{
|
||||||
if (item.FieldValueConvertFunc != null)
|
if (item.FieldValueConvertFunc != null)
|
||||||
|
{
|
||||||
return item.FieldValueConvertFunc(item.FieldValue);
|
return item.FieldValueConvertFunc(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.HasValue())
|
||||||
|
{
|
||||||
|
return UtilMethods.ConvertDataByTypeName(item.CSharpTypeName,item.FieldValue);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
return item.FieldValue;
|
return item.FieldValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public string FieldName { get; set; }
|
public string FieldName { get; set; }
|
||||||
public string FieldValue { get; set; }
|
public string FieldValue { get; set; }
|
||||||
|
public string CSharpTypeName { get; set; }
|
||||||
public ConditionalType ConditionalType { get; set; }
|
public ConditionalType ConditionalType { get; set; }
|
||||||
[Newtonsoft.Json.JsonIgnoreAttribute]
|
[Newtonsoft.Json.JsonIgnoreAttribute]
|
||||||
public Func<string,object> FieldValueConvertFunc { get; set; }
|
public Func<string,object> FieldValueConvertFunc { get; set; }
|
||||||
|
@ -38,10 +38,27 @@ namespace SqlSugar
|
|||||||
var list = Database.Where(it=>true);
|
var list = Database.Where(it=>true);
|
||||||
foreach (var pk in PkFields)
|
foreach (var pk in PkFields)
|
||||||
{
|
{
|
||||||
list = list.Where(it => it.GetType().GetProperty(pk).GetValue(it, null).ObjToString() == Item.GetType().GetProperty(pk).GetValue(Item, null).ObjToString());
|
list = list.Where(it =>IsEquals(it, pk));
|
||||||
}
|
}
|
||||||
return list.Any();
|
return list.Any();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsEquals(T it, string pk)
|
||||||
|
{
|
||||||
|
var leftValue = it.GetType().GetProperty(pk).GetValue(it, null);
|
||||||
|
var rightValue = Item.GetType().GetProperty(pk).GetValue(Item, null);
|
||||||
|
var left = leftValue.ObjToString();
|
||||||
|
var rigth = rightValue.ObjToString();
|
||||||
|
if (it.GetType().GetProperty(pk).PropertyType == UtilConstants.DecType)
|
||||||
|
{
|
||||||
|
return Convert.ToDecimal(leftValue) == Convert.ToDecimal(rightValue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return left == rigth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool NotAny()
|
public bool NotAny()
|
||||||
{
|
{
|
||||||
return !Any();
|
return !Any();
|
||||||
|
@ -286,6 +286,18 @@ namespace SqlSugar
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static string GetTypeName(object value)
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return value.GetType().Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static string GetParenthesesValue(string dbTypeName)
|
internal static string GetParenthesesValue(string dbTypeName)
|
||||||
{
|
{
|
||||||
if (Regex.IsMatch(dbTypeName, @"\(.+\)"))
|
if (Regex.IsMatch(dbTypeName, @"\(.+\)"))
|
||||||
@ -438,5 +450,44 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return dic;
|
return dic;
|
||||||
}
|
}
|
||||||
|
public static object ConvertDataByTypeName(string ctypename,string value)
|
||||||
|
{
|
||||||
|
var item = new ConditionalModel() {
|
||||||
|
CSharpTypeName = ctypename,
|
||||||
|
FieldValue = value
|
||||||
|
};
|
||||||
|
if (item.CSharpTypeName.EqualCase(UtilConstants.DecType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToDecimal(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.DobType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToDouble(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.DateType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToDateTime(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.IntType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToInt32(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.LongType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToInt64(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.ShortType.Name))
|
||||||
|
{
|
||||||
|
return Convert.ToInt16(item.FieldValue);
|
||||||
|
}
|
||||||
|
else if (item.CSharpTypeName.EqualCase(UtilConstants.DateTimeOffsetType.Name))
|
||||||
|
{
|
||||||
|
return UtilMethods.GetDateTimeOffsetByDateTime(Convert.ToDateTime(item.FieldValue));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return item.FieldValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user