diff --git a/Src/Asp.Net/AccessTest/Demo/Demo0_SqlSugarClient.cs b/Src/Asp.Net/AccessTest/Demo/Demo0_SqlSugarClient.cs index 2f2bd041b..ea2a54661 100644 --- a/Src/Asp.Net/AccessTest/Demo/Demo0_SqlSugarClient.cs +++ b/Src/Asp.Net/AccessTest/Demo/Demo0_SqlSugarClient.cs @@ -222,120 +222,120 @@ namespace OrmTest private static void DistributedTransactionExample() { - Console.WriteLine(""); - Console.WriteLine("#### Distributed TransactionExample Start ####"); - SqlSugarClient db = new SqlSugarClient(new List() - { - new ConnectionConfig(){ ConfigId="1", DbType=DbType.Access, ConnectionString=Config.ConnectionString,InitKeyType=InitKeyType.Attribute,IsAutoCloseConnection=true }, - new ConnectionConfig(){ ConfigId="2", DbType=DbType.Access, ConnectionString=Config.ConnectionString2 ,InitKeyType=InitKeyType.Attribute ,IsAutoCloseConnection=true} - }); + //Console.WriteLine(""); + //Console.WriteLine("#### Distributed TransactionExample Start ####"); + //SqlSugarClient db = new SqlSugarClient(new List() + //{ + // new ConnectionConfig(){ ConfigId="1", DbType=DbType.Access, ConnectionString=Config.ConnectionString,InitKeyType=InitKeyType.Attribute,IsAutoCloseConnection=true }, + // new ConnectionConfig(){ ConfigId="2", DbType=DbType.Access, ConnectionString=Config.ConnectionString2 ,InitKeyType=InitKeyType.Attribute ,IsAutoCloseConnection=true} + //}); - //use db1 - db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));// - db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); - Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); + ////use db1 + //db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));// + //db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); + //Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); - //use db2 - db.ChangeDatabase("2"); - db.DbMaintenance.CreateDatabase();//Create Database2 - db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem)); - db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); - Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); + ////use db2 + //db.ChangeDatabase("2"); + //db.DbMaintenance.CreateDatabase();//Create Database2 + //db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem)); + //db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); + //Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); - // Example 1 - Console.WriteLine("Example 1"); - try - { - db.BeginTran(); + //// Example 1 + //Console.WriteLine("Example 1"); + //try + //{ + // db.BeginTran(); - db.ChangeDatabase("1");//use db1 - db.Deleteable().ExecuteCommand(); - Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); + // db.ChangeDatabase("1");//use db1 + // db.Deleteable().ExecuteCommand(); + // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); - db.ChangeDatabase("2");//use db2 - db.Deleteable().ExecuteCommand(); - Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); + // db.ChangeDatabase("2");//use db2 + // db.Deleteable().ExecuteCommand(); + // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); - throw new Exception(); - db.CommitTran(); - } - catch - { - db.RollbackTran(); - Console.WriteLine("---Roll back"); - db.ChangeDatabase("1");//use db1 - Console.WriteLine(db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); + // throw new Exception(); + // db.CommitTran(); + //} + //catch + //{ + // db.RollbackTran(); + // Console.WriteLine("---Roll back"); + // db.ChangeDatabase("1");//use db1 + // Console.WriteLine(db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); - db.ChangeDatabase("2");//use db2 - Console.WriteLine(db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); - } + // db.ChangeDatabase("2");//use db2 + // Console.WriteLine(db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); + //} - // Example 2 - Console.WriteLine("Example 2"); + //// Example 2 + //Console.WriteLine("Example 2"); - var result = db.UseTran(() => - { + //var result = db.UseTran(() => + //{ - db.ChangeDatabase("1");//use db1 - db.Deleteable().ExecuteCommand(); - Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); + // db.ChangeDatabase("1");//use db1 + // db.Deleteable().ExecuteCommand(); + // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); - db.ChangeDatabase("2");//use db2 - db.Deleteable().ExecuteCommand(); - Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); - throw new Exception(""); + // db.ChangeDatabase("2");//use db2 + // db.Deleteable().ExecuteCommand(); + // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); + // throw new Exception(""); - }); - if (result.IsSuccess == false) - { - Console.WriteLine("---Roll back"); - db.ChangeDatabase("1");//use db1 - Console.WriteLine(db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); + //}); + //if (result.IsSuccess == false) + //{ + // Console.WriteLine("---Roll back"); + // db.ChangeDatabase("1");//use db1 + // Console.WriteLine(db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); - db.ChangeDatabase("2");//use db2 - Console.WriteLine(db.CurrentConnectionConfig.DbType); - Console.WriteLine(db.Queryable().Count()); - } + // db.ChangeDatabase("2");//use db2 + // Console.WriteLine(db.CurrentConnectionConfig.DbType); + // Console.WriteLine(db.Queryable().Count()); + //} - // Example 3 - Console.WriteLine("Example 3"); - Task> result2 = AsyncTranDemo(db); - result2.Wait(); + //// Example 3 + //Console.WriteLine("Example 3"); + //Task> result2 = AsyncTranDemo(db); + //result2.Wait(); - // Example 4 - Console.WriteLine("Example 4"); - var mysqldb = db.GetConnection("1");//获取ConfigId为1的数据库对象 - var sqlServerdb = db.GetConnection("2");//获取默认对象 - Console.WriteLine(mysqldb.Queryable().Count()); - Console.WriteLine(sqlServerdb.Queryable().Count()); - try - { - db.BeginTran(); + //// Example 4 + //Console.WriteLine("Example 4"); + //var mysqldb = db.GetConnection("1");//获取ConfigId为1的数据库对象 + //var sqlServerdb = db.GetConnection("2");//获取默认对象 + //Console.WriteLine(mysqldb.Queryable().Count()); + //Console.WriteLine(sqlServerdb.Queryable().Count()); + //try + //{ + // db.BeginTran(); - sqlServerdb.Deleteable().ExecuteCommand(); - mysqldb.Deleteable().ExecuteCommand(); - Console.WriteLine(mysqldb.Queryable().Count()); - Console.WriteLine(sqlServerdb.Queryable().Count()); + // sqlServerdb.Deleteable().ExecuteCommand(); + // mysqldb.Deleteable().ExecuteCommand(); + // Console.WriteLine(mysqldb.Queryable().Count()); + // Console.WriteLine(sqlServerdb.Queryable().Count()); - throw new Exception(""); - db.CommitTran(); - } - catch (Exception) - { - db.RollbackTran();//数据回滚 - Console.WriteLine(mysqldb.Queryable().Count()); - Console.WriteLine(sqlServerdb.Queryable().Count()); - } - Console.WriteLine("#### Distributed TransactionExample End ####"); + // throw new Exception(""); + // db.CommitTran(); + //} + //catch (Exception) + //{ + // db.RollbackTran();//数据回滚 + // Console.WriteLine(mysqldb.Queryable().Count()); + // Console.WriteLine(sqlServerdb.Queryable().Count()); + //} + //Console.WriteLine("#### Distributed TransactionExample End ####"); } /// diff --git a/Src/Asp.Net/AccessTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/AccessTest/Demo/Demo1_Queryable.cs index a4a9df76c..8f3461488 100644 --- a/Src/Asp.Net/AccessTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/AccessTest/Demo/Demo1_Queryable.cs @@ -111,17 +111,17 @@ namespace OrmTest var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByWhere2 = db.Queryable().Where(it => it.Id == DateTime.Now.Year).ToList(); var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); - var getByFuns2 = db.Queryable().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList(); + // var getByFuns2 = db.Queryable().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList(); var getDicionary = db.Queryable().ToDictionary(it => it.Id, it => it.Name); var getDicionaryList = db.Queryable().ToDictionaryList(); var getTest = db.Queryable().Where(it =>string.IsNullOrWhiteSpace( it.Name)).ToList(); - var test01 = db.Queryable().PartitionBy(it => it.Id).ToList(); + // var test01 = db.Queryable().PartitionBy(it => it.Id).ToList(); var q1 = db.Queryable().Take(1); var q2 = db.Queryable().Take(2); - var test02 = db.Union(q1, q2).ToList(); + //var test02 = db.Union(q1, q2).ToList(); var test03 = db.Queryable().Take(1).ToList(); var dp = DateTime.Now; - var test05 = db.Queryable().Where(it => it.CreateTime.Month== dp.Month).ToList(); + //var test05 = db.Queryable().Where(it => it.CreateTime.Month== dp.Month).ToList(); var test06 = db.Queryable() .ToPivotTable(it => it.Id, it => it.Name, it => it.Sum(x => x.Price)); @@ -131,8 +131,8 @@ namespace OrmTest var test08 = db.Queryable() .ToPivotJson(it => it.Id, it => it.Name, it => it.Sum(x => x.Price)); - var test09 = db.Queryable().PartitionBy(it=>it.Id).ToPageListAsync(1,2,0); - test09.Wait(); + //var test09 = db.Queryable().PartitionBy(it=>it.Id).ToPageListAsync(1,2,0); + //test09.Wait(); int c = 0; var test10 = db.Queryable().ToPageList(1, 2, ref c); diff --git a/Src/Asp.Net/AccessTest/Test.accdb b/Src/Asp.Net/AccessTest/Test.accdb index 21d35872a..8394fe3a8 100644 Binary files a/Src/Asp.Net/AccessTest/Test.accdb and b/Src/Asp.Net/AccessTest/Test.accdb differ diff --git a/Src/Asp.Net/AccessTest/Test.laccdb b/Src/Asp.Net/AccessTest/Test.laccdb new file mode 100644 index 000000000..c32ba73bf Binary files /dev/null and b/Src/Asp.Net/AccessTest/Test.laccdb differ diff --git a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessBuilder.cs b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessBuilder.cs index 2492c8bfd..1e268e2e7 100644 --- a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessBuilder.cs +++ b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessBuilder.cs @@ -11,5 +11,7 @@ namespace SqlSugar.Access { public override string SqlTranslationLeft { get { return "["; } } public override string SqlTranslationRight { get { return "]"; } } + public override string SqlDateNow { get { return " NOW()"; } } + public override string FullSqlDateNow { get { return "SELECT NOW()"; } } } } diff --git a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessExpressionContext.cs b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessExpressionContext.cs index 2ab60719b..ae8ee96f2 100644 --- a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessExpressionContext.cs @@ -14,12 +14,20 @@ namespace SqlSugar.Access public SqlSugarProvider Context { get; set; } public AccessExpressionContext() { - base.DbMehtods = new SqlServerMethod(); + base.DbMehtods = new AccessMethod(); } } public partial class AccessMethod : DefaultDbMethod, IDbMethods { + public override string GetRandom() + { + return " rnd() "; + } + public override string GetDate() + { + return " NOW()"; + } public override string HasValue(MethodCallExpressionModel model) { if (model.Args[0].Type == UtilConstants.GuidType) diff --git a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessQueryBuilder.cs b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessQueryBuilder.cs index 5d8e46fcc..069ccf6d5 100644 --- a/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar.Access/Access/SqlBuilder/AccessQueryBuilder.cs @@ -23,13 +23,17 @@ namespace SqlSugar.Access var isIgnoreOrderBy = this.IsCount && this.PartitionByValue.IsNullOrEmpty(); AppendFilter(); sql = new StringBuilder(); - if (this.OrderByValue == null && (Skip != null || Take != null)) this.OrderByValue = " ORDER BY GetDate() "; + if (this.OrderByValue == null && (Skip != null || Take != null)) this.OrderByValue = " ORDER BY now() "; if (this.PartitionByValue.HasValue()) { this.OrderByValue = this.PartitionByValue + this.OrderByValue; } var isFirst = (Skip == 0 || Skip == null) && Take == 1 && DisableTop == false; var isRowNumber = (Skip != null || Take != null) && !isFirst; + var isPage = isRowNumber; + isRowNumber = false; + Skip = null; + Take = null; var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString); string groupByValue = GetGroupByString + HavingInfos; string orderByValue = (!isRowNumber && this.OrderByValue.HasValue()) ? GetOrderByString : null; @@ -42,7 +46,7 @@ namespace SqlSugar.Access { if (externalOrderBy.IsNullOrEmpty()) { - externalOrderBy = " ORDER BY GetDate() "; + externalOrderBy = " ORDER BY now() "; } result = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", GetExternalOrderBy(externalOrderBy), result); result = ToPageSql2(result, ExternalPageIndex, ExternalPageSize, true); @@ -52,7 +56,7 @@ namespace SqlSugar.Access { if (this.OrderByValue.IsNullOrEmpty()) { - result += " ORDER BY GETDATE() "; + result += " ORDER BY now() "; } result += this.Offset; }