mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 18:22:23 +08:00
-
This commit is contained in:
@@ -22,6 +22,23 @@ namespace OrmTest.Demo
|
|||||||
Ado();
|
Ado();
|
||||||
Group();
|
Group();
|
||||||
Sqlable();
|
Sqlable();
|
||||||
|
Tran();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Tran()
|
||||||
|
{
|
||||||
|
var db = GetInstance();
|
||||||
|
|
||||||
|
var result=db.UseTran(() =>
|
||||||
|
{
|
||||||
|
var count= db.Ado.ExecuteCommand("delete student");
|
||||||
|
throw new Exception("error haha");
|
||||||
|
});
|
||||||
|
|
||||||
|
var result2 = db.UseTran<List<Student>>(() =>
|
||||||
|
{
|
||||||
|
return db.Queryable<Student>().ToList();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Group()
|
private static void Group()
|
||||||
@@ -45,7 +62,7 @@ namespace OrmTest.Demo
|
|||||||
private static void Ado()
|
private static void Ado()
|
||||||
{
|
{
|
||||||
var db = GetInstance();
|
var db = GetInstance();
|
||||||
var t1= db.Ado.SqlQuery<string>("select 'a'");
|
var t1 = db.Ado.SqlQuery<string>("select 'a'");
|
||||||
var t2 = db.Ado.GetInt("select 1");
|
var t2 = db.Ado.GetInt("select 1");
|
||||||
var t3 = db.Ado.GetDataTable("select 1 as id");
|
var t3 = db.Ado.GetDataTable("select 1 as id");
|
||||||
//more
|
//more
|
||||||
@@ -60,13 +77,13 @@ namespace OrmTest.Demo
|
|||||||
var getByPrimaryKey = db.Queryable<Student>().InSingle(2);
|
var getByPrimaryKey = db.Queryable<Student>().InSingle(2);
|
||||||
var getByWhere = db.Queryable<Student>().Where(it => it.Id == 1 || it.Name == "a").ToList();
|
var getByWhere = db.Queryable<Student>().Where(it => it.Id == 1 || it.Name == "a").ToList();
|
||||||
var getByFuns = db.Queryable<Student>().Where(it => NBORM.IsNullOrEmpty(it.Name)).ToList();
|
var getByFuns = db.Queryable<Student>().Where(it => NBORM.IsNullOrEmpty(it.Name)).ToList();
|
||||||
var sum = db.Queryable<Student>().Sum(it=>it.Id);
|
var sum = db.Queryable<Student>().Sum(it => it.Id);
|
||||||
var isAny = db.Queryable<Student>().Where(it=>it.Id==-1).Any();
|
var isAny = db.Queryable<Student>().Where(it => it.Id == -1).Any();
|
||||||
var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);
|
var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);
|
||||||
var getListByRename = db.Queryable<School>().AS("Student").ToList();
|
var getListByRename = db.Queryable<School>().AS("Student").ToList();
|
||||||
var group = db.Queryable<Student>().GroupBy(it => it.Id)
|
var group = db.Queryable<Student>().GroupBy(it => it.Id)
|
||||||
.Having(it => NBORM.AggregateCount(it.Id) > 10)
|
.Having(it => NBORM.AggregateCount(it.Id) > 10)
|
||||||
.Select(it =>new { id = NBORM.AggregateCount(it.Id) }).ToList();
|
.Select(it => new { id = NBORM.AggregateCount(it.Id) }).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Page()
|
public static void Page()
|
||||||
@@ -96,8 +113,8 @@ namespace OrmTest.Demo
|
|||||||
var list = db.Queryable<Student, School>((st, sc) => new object[] {
|
var list = db.Queryable<Student, School>((st, sc) => new object[] {
|
||||||
JoinType.Left,st.SchoolId==sc.Id
|
JoinType.Left,st.SchoolId==sc.Id
|
||||||
})
|
})
|
||||||
.Where((st,sc)=> sc.Id == 1)
|
.Where((st, sc) => sc.Id == 1)
|
||||||
.Where((st,sc) => st.Id == 1)
|
.Where((st, sc) => st.Id == 1)
|
||||||
.Where((st, sc) => st.Id == 1 && sc.Id == 2).ToList();
|
.Where((st, sc) => st.Id == 1 && sc.Id == 2).ToList();
|
||||||
|
|
||||||
//SELECT [st].[Id],[st].[SchoolId],[st].[Name],[st].[CreateTime] FROM [Student] st
|
//SELECT [st].[Id],[st].[SchoolId],[st].[Name],[st].[CreateTime] FROM [Student] st
|
||||||
@@ -119,26 +136,26 @@ namespace OrmTest.Demo
|
|||||||
var list = db.Queryable<Student, School>((st, sc) => new object[] {
|
var list = db.Queryable<Student, School>((st, sc) => new object[] {
|
||||||
JoinType.Left,st.SchoolId==sc.Id
|
JoinType.Left,st.SchoolId==sc.Id
|
||||||
})
|
})
|
||||||
.Where(st=>st.Name=="jack").ToList();
|
.Where(st => st.Name == "jack").ToList();
|
||||||
|
|
||||||
//join 3
|
//join 3
|
||||||
var list2 = db.Queryable<Student, School,Student>((st, sc,st2) => new object[] {
|
var list2 = db.Queryable<Student, School, Student>((st, sc, st2) => new object[] {
|
||||||
JoinType.Left,st.SchoolId==sc.Id,
|
JoinType.Left,st.SchoolId==sc.Id,
|
||||||
JoinType.Left,st.SchoolId==st2.Id
|
JoinType.Left,st.SchoolId==st2.Id
|
||||||
})
|
})
|
||||||
.Where((st, sc, st2)=> st2.Id==1||sc.Id==1||st.Id==1).ToList();
|
.Where((st, sc, st2) => st2.Id == 1 || sc.Id == 1 || st.Id == 1).ToList();
|
||||||
|
|
||||||
//join return List<ViewModelStudent>
|
//join return List<ViewModelStudent>
|
||||||
var list3 = db.Queryable<Student, School>((st, sc) => new object[] {
|
var list3 = db.Queryable<Student, School>((st, sc) => new object[] {
|
||||||
JoinType.Left,st.SchoolId==sc.Id
|
JoinType.Left,st.SchoolId==sc.Id
|
||||||
}).Select((st,sc)=>new ViewModelStudent { Name= st.Name,SchoolId=sc.Id }).ToList();
|
}).Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
|
||||||
|
|
||||||
//join Order By (order by st.id desc,sc.id desc)
|
//join Order By (order by st.id desc,sc.id desc)
|
||||||
var list4 = db.Queryable<Student, School>((st, sc) => new object[] {
|
var list4 = db.Queryable<Student, School>((st, sc) => new object[] {
|
||||||
JoinType.Left,st.SchoolId==sc.Id
|
JoinType.Left,st.SchoolId==sc.Id
|
||||||
})
|
})
|
||||||
.OrderBy(st=>st.Id,OrderByType.Desc)
|
.OrderBy(st => st.Id, OrderByType.Desc)
|
||||||
.OrderBy((st,sc)=>sc.Id,OrderByType.Desc)
|
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
|
||||||
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
|
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
|
||||||
}
|
}
|
||||||
public static void Funs()
|
public static void Funs()
|
||||||
@@ -179,7 +196,7 @@ namespace OrmTest.Demo
|
|||||||
//NBORM.AggregateMin(object thisValue)
|
//NBORM.AggregateMin(object thisValue)
|
||||||
//NBORM.AggregateMax(object thisValue)
|
//NBORM.AggregateMax(object thisValue)
|
||||||
//NBORM.AggregateCount(object thisValue)
|
//NBORM.AggregateCount(object thisValue)
|
||||||
}
|
}
|
||||||
public static void Select()
|
public static void Select()
|
||||||
{
|
{
|
||||||
var db = GetInstance();
|
var db = GetInstance();
|
||||||
@@ -194,7 +211,7 @@ namespace OrmTest.Demo
|
|||||||
})
|
})
|
||||||
.OrderBy(st => st.Id, OrderByType.Desc)
|
.OrderBy(st => st.Id, OrderByType.Desc)
|
||||||
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
|
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
|
||||||
.Select((st, sc) => new { Name = st.Name, SchoolId = sc.Id }).ToList();
|
.Select((st, sc) => new { Name = st.Name, SchoolId = sc.Id }).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Sqlable()
|
private static void Sqlable()
|
||||||
@@ -205,7 +222,7 @@ namespace OrmTest.Demo
|
|||||||
.Where("st.id>@id")
|
.Where("st.id>@id")
|
||||||
.AddParameters(new { id = 1 })
|
.AddParameters(new { id = 1 })
|
||||||
.Select("st.*").ToList();
|
.Select("st.*").ToList();
|
||||||
//SELECT st.* FROM [Student] st Left JOIN School sh ON sh.id=st.schoolid WHERE st.id>@id
|
//SELECT st.* FROM [Student] st Left JOIN School sh ON sh.id=st.schoolid WHERE st.id>@id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -86,11 +86,13 @@ namespace SqlSugar
|
|||||||
#region Transaction
|
#region Transaction
|
||||||
public virtual void BeginTran()
|
public virtual void BeginTran()
|
||||||
{
|
{
|
||||||
this.Connection.BeginTransaction();
|
CheckConnection();
|
||||||
|
this.Transaction=this.Connection.BeginTransaction();
|
||||||
}
|
}
|
||||||
public virtual void BeginTran(IsolationLevel iso)
|
public virtual void BeginTran(IsolationLevel iso)
|
||||||
{
|
{
|
||||||
this.Connection.BeginTransaction(iso);
|
CheckConnection();
|
||||||
|
this.Transaction = this.Connection.BeginTransaction(iso);
|
||||||
}
|
}
|
||||||
public virtual void RollbackTran()
|
public virtual void RollbackTran()
|
||||||
{
|
{
|
||||||
|
15
SqlSugar/Entities/SugarMessageResult.cs
Normal file
15
SqlSugar/Entities/SugarMessageResult.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class SugarMessageResult<T>
|
||||||
|
{
|
||||||
|
public bool IsSuccess { get; set; }
|
||||||
|
public Exception Exception { get; set; }
|
||||||
|
public string Messaage { get; set; }
|
||||||
|
public T Data { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@@ -58,6 +58,7 @@
|
|||||||
<Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" />
|
<Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" />
|
||||||
<Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" />
|
<Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" />
|
||||||
<Compile Include="Abstract\UpdateProvider\UpdateableProvider.cs" />
|
<Compile Include="Abstract\UpdateProvider\UpdateableProvider.cs" />
|
||||||
|
<Compile Include="Entities\SugarMessageResult.cs" />
|
||||||
<Compile Include="Interface\IConnectionConfig.cs" />
|
<Compile Include="Interface\IConnectionConfig.cs" />
|
||||||
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerDeleteBuilder.cs" />
|
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerDeleteBuilder.cs" />
|
||||||
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerInsertBuilder.cs" />
|
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerInsertBuilder.cs" />
|
||||||
|
@@ -150,9 +150,9 @@ namespace SqlSugar
|
|||||||
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
||||||
return queryable;
|
return queryable;
|
||||||
}
|
}
|
||||||
public virtual ISugarQueryable<T,T2> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression) where T : class, new()
|
public virtual ISugarQueryable<T, T2> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression) where T : class, new()
|
||||||
{
|
{
|
||||||
InitMppingInfo<T,T2>();
|
InitMppingInfo<T, T2>();
|
||||||
var queryable = InstanceFactory.GetQueryable<T, T2>(base.CurrentConnectionConfig);
|
var queryable = InstanceFactory.GetQueryable<T, T2>(base.CurrentConnectionConfig);
|
||||||
base.CreateQueryable(queryable);
|
base.CreateQueryable(queryable);
|
||||||
string shortName = string.Empty;
|
string shortName = string.Empty;
|
||||||
@@ -160,20 +160,20 @@ namespace SqlSugar
|
|||||||
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
||||||
return queryable;
|
return queryable;
|
||||||
}
|
}
|
||||||
public virtual ISugarQueryable<T,T2,T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, object[]>> joinExpression) where T : class, new()
|
public virtual ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, object[]>> joinExpression) where T : class, new()
|
||||||
{
|
{
|
||||||
InitMppingInfo<T, T2,T3>();
|
InitMppingInfo<T, T2, T3>();
|
||||||
var queryable = InstanceFactory.GetQueryable<T, T2,T3>(base.CurrentConnectionConfig);
|
var queryable = InstanceFactory.GetQueryable<T, T2, T3>(base.CurrentConnectionConfig);
|
||||||
base.CreateQueryable(queryable);
|
base.CreateQueryable(queryable);
|
||||||
string shortName = string.Empty;
|
string shortName = string.Empty;
|
||||||
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3));
|
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3));
|
||||||
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
||||||
return queryable;
|
return queryable;
|
||||||
}
|
}
|
||||||
public virtual ISugarQueryable<T,T2,T3,T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, object[]>> joinExpression) where T : class, new()
|
public virtual ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, object[]>> joinExpression) where T : class, new()
|
||||||
{
|
{
|
||||||
InitMppingInfo<T, T2,T3,T4>();
|
InitMppingInfo<T, T2, T3, T4>();
|
||||||
var queryable = InstanceFactory.GetQueryable<T, T2,T3,T4>(base.CurrentConnectionConfig);
|
var queryable = InstanceFactory.GetQueryable<T, T2, T3, T4>(base.CurrentConnectionConfig);
|
||||||
base.CreateQueryable(queryable);
|
base.CreateQueryable(queryable);
|
||||||
string shortName = string.Empty;
|
string shortName = string.Empty;
|
||||||
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3), typeof(T4));
|
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3), typeof(T4));
|
||||||
@@ -385,5 +385,48 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Use Methods
|
||||||
|
public SugarMessageResult<bool> UseTran(Action action)
|
||||||
|
{
|
||||||
|
var result = new SugarMessageResult<bool>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.Ado.BeginTran();
|
||||||
|
if (action != null)
|
||||||
|
action();
|
||||||
|
this.Ado.CommitTran();
|
||||||
|
result.Data = result.IsSuccess = true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.Exception = ex;
|
||||||
|
result.Messaage = ex.Message;
|
||||||
|
result.IsSuccess = false;
|
||||||
|
this.Ado.RollbackTran();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public SugarMessageResult<T> UseTran<T>(Func<T> action)
|
||||||
|
{
|
||||||
|
var result = new SugarMessageResult<T>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.Ado.BeginTran();
|
||||||
|
if (action != null)
|
||||||
|
result.Data = action();
|
||||||
|
this.Ado.CommitTran();
|
||||||
|
result.IsSuccess = true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.Exception = ex;
|
||||||
|
result.Messaage = ex.Message;
|
||||||
|
result.IsSuccess = false;
|
||||||
|
this.Ado.RollbackTran();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user