Update Access

This commit is contained in:
sunkaixuan 2022-02-21 00:04:23 +08:00
parent ac54f02455
commit da7bcf441f
7 changed files with 119 additions and 105 deletions

View File

@ -222,120 +222,120 @@ namespace OrmTest
private static void DistributedTransactionExample() private static void DistributedTransactionExample()
{ {
Console.WriteLine(""); //Console.WriteLine("");
Console.WriteLine("#### Distributed TransactionExample Start ####"); //Console.WriteLine("#### Distributed TransactionExample Start ####");
SqlSugarClient db = new SqlSugarClient(new List<ConnectionConfig>() //SqlSugarClient db = new SqlSugarClient(new List<ConnectionConfig>()
{ //{
new ConnectionConfig(){ ConfigId="1", DbType=DbType.Access, ConnectionString=Config.ConnectionString,InitKeyType=InitKeyType.Attribute,IsAutoCloseConnection=true }, // 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} // new ConnectionConfig(){ ConfigId="2", DbType=DbType.Access, ConnectionString=Config.ConnectionString2 ,InitKeyType=InitKeyType.Attribute ,IsAutoCloseConnection=true}
}); //});
//use db1 ////use db1
db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));// //db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));//
db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); //db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand();
Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable<Order>().Count()); //Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable<Order>().Count());
//use db2 ////use db2
db.ChangeDatabase("2"); //db.ChangeDatabase("2");
db.DbMaintenance.CreateDatabase();//Create Database2 //db.DbMaintenance.CreateDatabase();//Create Database2
db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem)); //db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));
db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); //db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand();
Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable<Order>().Count()); //Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable<Order>().Count());
// Example 1 //// Example 1
Console.WriteLine("Example 1"); //Console.WriteLine("Example 1");
try //try
{ //{
db.BeginTran(); // db.BeginTran();
db.ChangeDatabase("1");//use db1 // db.ChangeDatabase("1");//use db1
db.Deleteable<Order>().ExecuteCommand(); // db.Deleteable<Order>().ExecuteCommand();
Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
db.ChangeDatabase("2");//use db2 // db.ChangeDatabase("2");//use db2
db.Deleteable<Order>().ExecuteCommand(); // db.Deleteable<Order>().ExecuteCommand();
Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
throw new Exception(); // throw new Exception();
db.CommitTran(); // db.CommitTran();
} //}
catch //catch
{ //{
db.RollbackTran(); // db.RollbackTran();
Console.WriteLine("---Roll back"); // Console.WriteLine("---Roll back");
db.ChangeDatabase("1");//use db1 // db.ChangeDatabase("1");//use db1
Console.WriteLine(db.CurrentConnectionConfig.DbType); // Console.WriteLine(db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
db.ChangeDatabase("2");//use db2 // db.ChangeDatabase("2");//use db2
Console.WriteLine(db.CurrentConnectionConfig.DbType); // Console.WriteLine(db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
} //}
// Example 2 //// Example 2
Console.WriteLine("Example 2"); //Console.WriteLine("Example 2");
var result = db.UseTran(() => //var result = db.UseTran(() =>
{ //{
db.ChangeDatabase("1");//use db1 // db.ChangeDatabase("1");//use db1
db.Deleteable<Order>().ExecuteCommand(); // db.Deleteable<Order>().ExecuteCommand();
Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
db.ChangeDatabase("2");//use db2 // db.ChangeDatabase("2");//use db2
db.Deleteable<Order>().ExecuteCommand(); // db.Deleteable<Order>().ExecuteCommand();
Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); // Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
throw new Exception(""); // throw new Exception("");
}); //});
if (result.IsSuccess == false) //if (result.IsSuccess == false)
{ //{
Console.WriteLine("---Roll back"); // Console.WriteLine("---Roll back");
db.ChangeDatabase("1");//use db1 // db.ChangeDatabase("1");//use db1
Console.WriteLine(db.CurrentConnectionConfig.DbType); // Console.WriteLine(db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
db.ChangeDatabase("2");//use db2 // db.ChangeDatabase("2");//use db2
Console.WriteLine(db.CurrentConnectionConfig.DbType); // Console.WriteLine(db.CurrentConnectionConfig.DbType);
Console.WriteLine(db.Queryable<Order>().Count()); // Console.WriteLine(db.Queryable<Order>().Count());
} //}
// Example 3 //// Example 3
Console.WriteLine("Example 3"); //Console.WriteLine("Example 3");
Task<DbResult<bool>> result2 = AsyncTranDemo(db); //Task<DbResult<bool>> result2 = AsyncTranDemo(db);
result2.Wait(); //result2.Wait();
// Example 4 //// Example 4
Console.WriteLine("Example 4"); //Console.WriteLine("Example 4");
var mysqldb = db.GetConnection("1");//获取ConfigId为1的数据库对象 //var mysqldb = db.GetConnection("1");//获取ConfigId为1的数据库对象
var sqlServerdb = db.GetConnection("2");//获取默认对象 //var sqlServerdb = db.GetConnection("2");//获取默认对象
Console.WriteLine(mysqldb.Queryable<Order>().Count()); //Console.WriteLine(mysqldb.Queryable<Order>().Count());
Console.WriteLine(sqlServerdb.Queryable<Order>().Count()); //Console.WriteLine(sqlServerdb.Queryable<Order>().Count());
try //try
{ //{
db.BeginTran(); // db.BeginTran();
sqlServerdb.Deleteable<Order>().ExecuteCommand(); // sqlServerdb.Deleteable<Order>().ExecuteCommand();
mysqldb.Deleteable<Order>().ExecuteCommand(); // mysqldb.Deleteable<Order>().ExecuteCommand();
Console.WriteLine(mysqldb.Queryable<Order>().Count()); // Console.WriteLine(mysqldb.Queryable<Order>().Count());
Console.WriteLine(sqlServerdb.Queryable<Order>().Count()); // Console.WriteLine(sqlServerdb.Queryable<Order>().Count());
throw new Exception(""); // throw new Exception("");
db.CommitTran(); // db.CommitTran();
} //}
catch (Exception) //catch (Exception)
{ //{
db.RollbackTran();//数据回滚 // db.RollbackTran();//数据回滚
Console.WriteLine(mysqldb.Queryable<Order>().Count()); // Console.WriteLine(mysqldb.Queryable<Order>().Count());
Console.WriteLine(sqlServerdb.Queryable<Order>().Count()); // Console.WriteLine(sqlServerdb.Queryable<Order>().Count());
} //}
Console.WriteLine("#### Distributed TransactionExample End ####"); //Console.WriteLine("#### Distributed TransactionExample End ####");
} }
/// <summary> /// <summary>

View File

@ -111,17 +111,17 @@ namespace OrmTest
var getByWhere = db.Queryable<Order>().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByWhere = db.Queryable<Order>().Where(it => it.Id == 1 || it.Name == "a").ToList();
var getByWhere2 = db.Queryable<Order>().Where(it => it.Id == DateTime.Now.Year).ToList(); var getByWhere2 = db.Queryable<Order>().Where(it => it.Id == DateTime.Now.Year).ToList();
var getByFuns = db.Queryable<Order>().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); var getByFuns = db.Queryable<Order>().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList();
var getByFuns2 = db.Queryable<Order>().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList(); // var getByFuns2 = db.Queryable<Order>().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList();
var getDicionary = db.Queryable<Order>().ToDictionary(it => it.Id, it => it.Name); var getDicionary = db.Queryable<Order>().ToDictionary(it => it.Id, it => it.Name);
var getDicionaryList = db.Queryable<Order>().ToDictionaryList(); var getDicionaryList = db.Queryable<Order>().ToDictionaryList();
var getTest = db.Queryable<Order>().Where(it =>string.IsNullOrWhiteSpace( it.Name)).ToList(); var getTest = db.Queryable<Order>().Where(it =>string.IsNullOrWhiteSpace( it.Name)).ToList();
var test01 = db.Queryable<Order>().PartitionBy(it => it.Id).ToList(); // var test01 = db.Queryable<Order>().PartitionBy(it => it.Id).ToList();
var q1 = db.Queryable<Order>().Take(1); var q1 = db.Queryable<Order>().Take(1);
var q2 = db.Queryable<Order>().Take(2); var q2 = db.Queryable<Order>().Take(2);
var test02 = db.Union(q1, q2).ToList(); //var test02 = db.Union(q1, q2).ToList();
var test03 = db.Queryable<Order>().Take(1).ToList(); var test03 = db.Queryable<Order>().Take(1).ToList();
var dp = DateTime.Now; var dp = DateTime.Now;
var test05 = db.Queryable<Order>().Where(it => it.CreateTime.Month== dp.Month).ToList(); //var test05 = db.Queryable<Order>().Where(it => it.CreateTime.Month== dp.Month).ToList();
var test06 = db.Queryable<Order>() var test06 = db.Queryable<Order>()
.ToPivotTable(it => it.Id, it => it.Name, it => it.Sum(x => x.Price)); .ToPivotTable(it => it.Id, it => it.Name, it => it.Sum(x => x.Price));
@ -131,8 +131,8 @@ namespace OrmTest
var test08 = db.Queryable<Order>() var test08 = db.Queryable<Order>()
.ToPivotJson(it => it.Id, it => it.Name, it => it.Sum(x => x.Price)); .ToPivotJson(it => it.Id, it => it.Name, it => it.Sum(x => x.Price));
var test09 = db.Queryable<Order>().PartitionBy(it=>it.Id).ToPageListAsync(1,2,0); //var test09 = db.Queryable<Order>().PartitionBy(it=>it.Id).ToPageListAsync(1,2,0);
test09.Wait(); //test09.Wait();
int c = 0; int c = 0;
var test10 = db.Queryable<Order>().ToPageList(1, 2, ref c); var test10 = db.Queryable<Order>().ToPageList(1, 2, ref c);

Binary file not shown.

Binary file not shown.

View File

@ -11,5 +11,7 @@ namespace SqlSugar.Access
{ {
public override string SqlTranslationLeft { get { return "["; } } public override string SqlTranslationLeft { get { return "["; } }
public override string SqlTranslationRight { get { return "]"; } } public override string SqlTranslationRight { get { return "]"; } }
public override string SqlDateNow { get { return " NOW()"; } }
public override string FullSqlDateNow { get { return "SELECT NOW()"; } }
} }
} }

View File

@ -14,12 +14,20 @@ namespace SqlSugar.Access
public SqlSugarProvider Context { get; set; } public SqlSugarProvider Context { get; set; }
public AccessExpressionContext() public AccessExpressionContext()
{ {
base.DbMehtods = new SqlServerMethod(); base.DbMehtods = new AccessMethod();
} }
} }
public partial class AccessMethod : DefaultDbMethod, IDbMethods public partial class AccessMethod : DefaultDbMethod, IDbMethods
{ {
public override string GetRandom()
{
return " rnd() ";
}
public override string GetDate()
{
return " NOW()";
}
public override string HasValue(MethodCallExpressionModel model) public override string HasValue(MethodCallExpressionModel model)
{ {
if (model.Args[0].Type == UtilConstants.GuidType) if (model.Args[0].Type == UtilConstants.GuidType)

View File

@ -23,13 +23,17 @@ namespace SqlSugar.Access
var isIgnoreOrderBy = this.IsCount && this.PartitionByValue.IsNullOrEmpty(); var isIgnoreOrderBy = this.IsCount && this.PartitionByValue.IsNullOrEmpty();
AppendFilter(); AppendFilter();
sql = new StringBuilder(); 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()) if (this.PartitionByValue.HasValue())
{ {
this.OrderByValue = this.PartitionByValue + this.OrderByValue; this.OrderByValue = this.PartitionByValue + this.OrderByValue;
} }
var isFirst = (Skip == 0 || Skip == null) && Take == 1 && DisableTop == false; var isFirst = (Skip == 0 || Skip == null) && Take == 1 && DisableTop == false;
var isRowNumber = (Skip != null || Take != null) && !isFirst; 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); var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString);
string groupByValue = GetGroupByString + HavingInfos; string groupByValue = GetGroupByString + HavingInfos;
string orderByValue = (!isRowNumber && this.OrderByValue.HasValue()) ? GetOrderByString : null; string orderByValue = (!isRowNumber && this.OrderByValue.HasValue()) ? GetOrderByString : null;
@ -42,7 +46,7 @@ namespace SqlSugar.Access
{ {
if (externalOrderBy.IsNullOrEmpty()) 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 = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", GetExternalOrderBy(externalOrderBy), result);
result = ToPageSql2(result, ExternalPageIndex, ExternalPageSize, true); result = ToPageSql2(result, ExternalPageIndex, ExternalPageSize, true);
@ -52,7 +56,7 @@ namespace SqlSugar.Access
{ {
if (this.OrderByValue.IsNullOrEmpty()) if (this.OrderByValue.IsNullOrEmpty())
{ {
result += " ORDER BY GETDATE() "; result += " ORDER BY now() ";
} }
result += this.Offset; result += this.Offset;
} }