Update exp to sql

This commit is contained in:
sunkaixuan 2019-06-01 12:20:22 +08:00
parent ca1801038c
commit 92a6e26dac
3 changed files with 48 additions and 18 deletions

View File

@ -11,14 +11,14 @@ namespace OrmTest
//OldTestMain.Init(); //OldTestMain.Init();
//Demo //Demo
Demo0_SqlSugarClient.Init(); //Demo0_SqlSugarClient.Init();
Demo1_Queryable.Init(); //Demo1_Queryable.Init();
Demo2_Updateable.Init(); //Demo2_Updateable.Init();
Democ_GobalFilter.Init(); //Democ_GobalFilter.Init();
DemoD_DbFirst.Init(); //DemoD_DbFirst.Init();
DemoE_CodeFirst.Init(); //DemoE_CodeFirst.Init();
Demo5_SqlQueryable.Init(); //Demo5_SqlQueryable.Init();
Demo6_Queue.Init(); //Demo6_Queue.Init();
//Unit test //Unit test
NewUnitTest.Init(); NewUnitTest.Init();

View File

@ -8,13 +8,14 @@ namespace OrmTest
{ {
public partial class NewUnitTest public partial class NewUnitTest
{ {
public static void Queryable() { public static void Queryable()
{
var pageindex = 1; var pageindex = 1;
var pagesize = 10; var pagesize = 10;
var total = 0; var total = 0;
var totalPage = 0; var totalPage = 0;
var list=Db.Queryable<Order>().ToPageList(pageindex, pagesize, ref total, ref totalPage); var list = Db.Queryable<Order>().ToPageList(pageindex, pagesize, ref total, ref totalPage);
//Db.CodeFirst.InitTables(typeof(CarType)); //Db.CodeFirst.InitTables(typeof(CarType));
//Db.Updateable<CarType>() //Db.Updateable<CarType>()
@ -31,26 +32,47 @@ namespace OrmTest
Db.Queryable<Order>().Where(it => SqlSugar.SqlFunc.Equals(it.CreateTime.Date, it.CreateTime.Date)).ToList(); Db.Queryable<Order>().Where(it => SqlSugar.SqlFunc.Equals(it.CreateTime.Date, it.CreateTime.Date)).ToList();
var sql= Db.Queryable<UnitSelectTest>().Select(it => new UnitSelectTest() var sql = Db.Queryable<UnitSelectTest>().Select(it => new UnitSelectTest()
{ {
DcNull=it.Dc, DcNull = it.Dc,
Dc=it.Int Dc = it.Int
}).ToSql().Key; }).ToSql().Key;
UValidate.Check(sql, "SELECT [Dc] AS [DcNull] , [Int] AS [Dc] FROM [UnitSelectTest]", "Queryable"); UValidate.Check(sql, "SELECT [Dc] AS [DcNull] , [Int] AS [Dc] FROM [UnitSelectTest]", "Queryable");
sql= Db.Updateable<UnitSelectTest2>(new UnitSelectTest2()).ToSql().Key; sql = Db.Updateable<UnitSelectTest2>(new UnitSelectTest2()).ToSql().Key;
UValidate.Check(sql, @"UPDATE [UnitSelectTest2] SET UValidate.Check(sql, @"UPDATE [UnitSelectTest2] SET
[Dc]=@Dc,[IntNull]=@IntNull WHERE [Int]=@Int", "Queryable"); [Dc]=@Dc,[IntNull]=@IntNull WHERE [Int]=@Int", "Queryable");
sql= Db.Queryable<Order>().IgnoreColumns(it => it.CreateTime).ToSql().Key; sql = Db.Queryable<Order>().IgnoreColumns(it => it.CreateTime).ToSql().Key;
UValidate.Check(sql, "SELECT [Id],[Name],[Price],[CustomId] FROM [Order] ", "Queryable"); UValidate.Check(sql, "SELECT [Id],[Name],[Price],[CustomId] FROM [Order] ", "Queryable");
sql = Db.Queryable<Order>().IgnoreColumns(it => new { it.Id,it.Name }).ToSql().Key; sql = Db.Queryable<Order>().IgnoreColumns(it => new { it.Id, it.Name }).ToSql().Key;
UValidate.Check(sql, "SELECT [Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable"); UValidate.Check(sql, "SELECT [Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable");
sql = Db.Queryable<Order>().IgnoreColumns("id").ToSql().Key; sql = Db.Queryable<Order>().IgnoreColumns("id").ToSql().Key;
UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable"); UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable");
var cts = IEnumerbleContains.Data();
var list2=Db.Queryable<Order>()
.Where(p => /*ids.*/cts.Select(c => c.Id).Contains(p.Id)).ToList();
var cts2 = IEnumerbleContains.Data().ToList(); ;
var list3 = Db.Queryable<Order>()
.Where(p => /*ids.*/cts2.Select(c => c.Id).Contains(p.Id)).ToList();
} }
public static class IEnumerbleContains
{
public static IEnumerable<Order> Data()
{
for (int i = 0; i < 100; i++)
{
yield return new Order
{
Id = i,
};
}
}
}
public class UnitSelectTest2 public class UnitSelectTest2
@ -70,7 +92,7 @@ namespace OrmTest
public int? IntNull { get; set; } public int? IntNull { get; set; }
public decimal Int { get; set; } public decimal Int { get; set; }
} }
public class UnitGuidTable public class UnitGuidTable
{ {
public Guid? Id { get; set; } public Guid? Id { get; set; }

View File

@ -515,6 +515,14 @@ namespace SqlSugar
case "Contains": case "Contains":
return this.Context.DbMehtods.Contains(model); return this.Context.DbMehtods.Contains(model);
case "ContainsArray": case "ContainsArray":
if (model.Args[0].MemberValue == null)
{
var first = this.Context.Parameters.FirstOrDefault(it => it.ParameterName == model.Args[0].MemberName.ObjToString());
if (first.HasValue())
{
model.Args[0].MemberValue = first.Value;
}
}
var caResult = this.Context.DbMehtods.ContainsArray(model); var caResult = this.Context.DbMehtods.ContainsArray(model);
this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString()); this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString());
return caResult; return caResult;