This commit is contained in:
sunkaixuan
2017-05-27 01:00:41 +08:00
parent 682272fd47
commit 93a959b4a7
5 changed files with 104 additions and 26 deletions

View File

@@ -22,6 +22,23 @@ namespace OrmTest.Demo
Ado();
Group();
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()
@@ -34,7 +51,7 @@ namespace OrmTest.Demo
//SQL:
//SELECT AVG([Id]) AS[idAvg], [Name] AS[name] FROM[Student] GROUP BY[Name],[Id] HAVING(AVG([Id]) > 0 )
//NBORM.AggregateSum(object thisValue)
//NBORM.AggregateAvg<TResult>(TResult thisValue)
//NBORM.AggregateMin(object thisValue)
@@ -45,7 +62,7 @@ namespace OrmTest.Demo
private static void Ado()
{
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 t3 = db.Ado.GetDataTable("select 1 as id");
//more
@@ -60,13 +77,13 @@ namespace OrmTest.Demo
var getByPrimaryKey = db.Queryable<Student>().InSingle(2);
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 sum = db.Queryable<Student>().Sum(it=>it.Id);
var isAny = db.Queryable<Student>().Where(it=>it.Id==-1).Any();
var sum = db.Queryable<Student>().Sum(it => it.Id);
var isAny = db.Queryable<Student>().Where(it => it.Id == -1).Any();
var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);
var getListByRename = db.Queryable<School>().AS("Student").ToList();
var group = db.Queryable<Student>().GroupBy(it => it.Id)
.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()
@@ -96,8 +113,8 @@ namespace OrmTest.Demo
var list = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
})
.Where((st,sc)=> sc.Id == 1)
.Where((st,sc) => st.Id == 1)
.Where((st, sc) => sc.Id == 1)
.Where((st, sc) => st.Id == 1)
.Where((st, sc) => st.Id == 1 && sc.Id == 2).ToList();
//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[] {
JoinType.Left,st.SchoolId==sc.Id
})
.Where(st=>st.Name=="jack").ToList();
.Where(st => st.Name == "jack").ToList();
//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==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>
var list3 = db.Queryable<Student, School>((st, sc) => new object[] {
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)
var list4 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
})
.OrderBy(st=>st.Id,OrderByType.Desc)
.OrderBy((st,sc)=>sc.Id,OrderByType.Desc)
.OrderBy(st => st.Id, OrderByType.Desc)
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
}
public static void Funs()
@@ -179,7 +196,7 @@ namespace OrmTest.Demo
//NBORM.AggregateMin(object thisValue)
//NBORM.AggregateMax(object thisValue)
//NBORM.AggregateCount(object thisValue)
}
}
public static void Select()
{
var db = GetInstance();
@@ -194,7 +211,7 @@ namespace OrmTest.Demo
})
.OrderBy(st => st.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()
@@ -205,7 +222,7 @@ namespace OrmTest.Demo
.Where("st.id>@id")
.AddParameters(new { id = 1 })
.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
}

View File

@@ -86,11 +86,13 @@ namespace SqlSugar
#region Transaction
public virtual void BeginTran()
{
this.Connection.BeginTransaction();
CheckConnection();
this.Transaction=this.Connection.BeginTransaction();
}
public virtual void BeginTran(IsolationLevel iso)
{
this.Connection.BeginTransaction(iso);
CheckConnection();
this.Transaction = this.Connection.BeginTransaction(iso);
}
public virtual void RollbackTran()
{

View 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; }
}
}

View File

@@ -58,6 +58,7 @@
<Compile Include="Abstract\InsertableProvider\InsertableProvider.cs" />
<Compile Include="Abstract\DeleteProvider\DeleteableProvider.cs" />
<Compile Include="Abstract\UpdateProvider\UpdateableProvider.cs" />
<Compile Include="Entities\SugarMessageResult.cs" />
<Compile Include="Interface\IConnectionConfig.cs" />
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerDeleteBuilder.cs" />
<Compile Include="Realization\SqlServer\Core\SqlBuilder\SqlServerInsertBuilder.cs" />

View File

@@ -150,9 +150,9 @@ namespace SqlSugar
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
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);
base.CreateQueryable(queryable);
string shortName = string.Empty;
@@ -160,20 +160,20 @@ namespace SqlSugar
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
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>();
var queryable = InstanceFactory.GetQueryable<T, T2,T3>(base.CurrentConnectionConfig);
InitMppingInfo<T, T2, T3>();
var queryable = InstanceFactory.GetQueryable<T, T2, T3>(base.CurrentConnectionConfig);
base.CreateQueryable(queryable);
string shortName = string.Empty;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3));
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
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>();
var queryable = InstanceFactory.GetQueryable<T, T2,T3,T4>(base.CurrentConnectionConfig);
InitMppingInfo<T, T2, T3, T4>();
var queryable = InstanceFactory.GetQueryable<T, T2, T3, T4>(base.CurrentConnectionConfig);
base.CreateQueryable(queryable);
string shortName = string.Empty;
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression, ref shortName, typeof(T2), typeof(T3), typeof(T4));
@@ -385,5 +385,48 @@ namespace SqlSugar
}
}
#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
}
}