This commit is contained in:
sunkaixuan 2017-05-26 01:23:54 +08:00
parent a7cd1a541a
commit 6c6b98a77d
6 changed files with 110 additions and 44 deletions

View File

@ -93,9 +93,9 @@ namespace OrmTest.Demo
var list = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
})
.Where<School>(sc => sc.Id == 1)
.Where<Student>(st => st.Id == 1)
.Where<Student, School>((st, sc) => st.Id == 1 && sc.Id == 2).ToList();
.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
//Left JOIN School sc ON ( [st].[SchoolId] = [sc].[Id] )
@ -126,15 +126,15 @@ namespace OrmTest.Demo
//join return List<ViewModelStudent>
var list3 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
}).Select<Student,School,ViewModelStudent>((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<School>(sc=>sc.Id,OrderByType.Desc)
.Select<Student, School, ViewModelStudent>((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
.OrderBy((st,sc)=>sc.Id,OrderByType.Desc)
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
}
public static void Funs()
{
@ -184,6 +184,12 @@ namespace OrmTest.Demo
var s3 = db.Queryable<Student>().Select(it => new { newid = it.Id }).ToList();
var s4 = db.Queryable<Student>().Select(it => new { newid = it.Id, obj = it }).ToList();
var s5 = db.Queryable<Student>().Select(it => new ViewModelStudent2 { Student = it, Name = it.Name }).ToList();
var s6 = 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)
.Select((st, sc) => new { Name = st.Name, SchoolId = sc.Id }).ToList();
}
private static void Sqlable()

View File

@ -27,11 +27,11 @@ namespace OrmTest.UnitTest
JoinType.Left,st.SchoolId==sc.Id
})
.Where(st => st.Id == 1)
.Where<School>(sc => sc.Id == 1)
.Where<School, Student>((sc, st) => sc.Id == st.Id)
.Where((st,sc) => sc.Id == 1)
.Where((st,sc) => sc.Id == st.Id)
.GroupBy(st => st.Id)
.GroupBy<School>(sc => sc.Id).OrderBy<Student>(st => st.Id,OrderByType.Asc)
.Select<Student,School,dynamic>((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql();
.GroupBy((st,sc) => sc.Id).OrderBy(st => st.Id,OrderByType.Asc)
.Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql();
base.Check(@"SELECT [st].[ID] AS [stid] , [sc].[id] AS [scid] FROM [STudent] st Left JOIN School sc ON ( [st].[SchoolId] =[sc].[id]) WHERE ( [st].[ID] = @Id0 ) AND ( [sc].[id] = @Id1 ) AND ( [sc].[id] = [st].[ID] )GROUP BY [st].[ID],[sc].[id]ORDER BY [st].[ID] ASC ",
null, t2.Key, null, " Mapping t2 error");
var x2 = GetInstance();

View File

@ -62,7 +62,7 @@ namespace OrmTest.UnitTest
JoinType.Left,st.Id==st2.Id
})
.Where(st => st.Id > 0)
.Select<School, School, dynamic>((st, st2) => new { stid = st.Id, scId = st2.Id, xx = st }).ToSql();
.Select((st, st2) => new { stid = st.Id, scId = st2.Id, xx = st }).ToSql();
base.Check("SELECT [st].[Id] AS [stid] , [st2].[Id] AS [scId] , [st].[Id] AS [School.Id] , [st].[Name] AS [School.Name] FROM [School] st Left JOIN School st2 ON ( [st].[Id] = [st2].[Id] ) WHERE ( [st].[Id] > @Id0 ) "
, new List<SugarParameter>() {

View File

@ -10,16 +10,54 @@ using System.Text.RegularExpressions;
namespace SqlSugar
{
public partial class QueryableProvider<T, T2,T3,T4> : QueryableProvider<T>, ISugarQueryable<T, T2,T3,T4>
public partial class QueryableProvider<T, T2, T3, T4> : QueryableProvider<T>, ISugarQueryable<T, T2, T3, T4>
{
}
public partial class QueryableProvider<T, T2,T3> : QueryableProvider<T>, ISugarQueryable<T, T2,T3>
public partial class QueryableProvider<T, T2, T3> : QueryableProvider<T>, ISugarQueryable<T, T2, T3>
{
}
public partial class QueryableProvider<T,T2> : QueryableProvider<T>,ISugarQueryable<T,T2>{
public partial class QueryableProvider<T, T2> : QueryableProvider<T>, ISugarQueryable<T, T2>
{
public new ISugarQueryable<T, T2> Where(Expression<Func<T, bool>> expression) {
_Where(expression);
return this;
}
public ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, T2, TResult>> expression)
{
return _Select<TResult>(expression);
}
public ISugarQueryable<T, T2> Where(Expression<Func<T, T2, bool>> expression)
{
_Where(expression);
return this;
}
public ISugarQueryable<T, T2> OrderBy(Expression<Func<T, T2, object>> expression, OrderByType type = OrderByType.Asc)
{
this._OrderBy(expression, type);
return this;
}
public new ISugarQueryable<T, T2> OrderBy(Expression<Func<T, object>> expression, OrderByType type)
{
this._OrderBy(expression, type);
return this;
}
public new ISugarQueryable<T, T2> GroupBy(Expression<Func<T, object>> expression)
{
_GroupBy(expression);
return this;
}
public ISugarQueryable<T, T2> GroupBy(Expression<Func<T, T2, object>> expression)
{
_GroupBy(expression);
return this;
}
}
public partial class QueryableProvider<T> : QueryableAccessory, ISugarQueryable<T>
{
@ -609,7 +647,7 @@ namespace SqlSugar
#region Private Methods
private ISugarQueryable<TResult> _Select<TResult>(Expression expression)
protected ISugarQueryable<TResult> _Select<TResult>(Expression expression)
{
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context;
@ -645,7 +683,7 @@ namespace SqlSugar
Having(lamResult.GetResultString());
return this;
}
private List<TResult> _ToList<TResult>()
protected List<TResult> _ToList<TResult>()
{
List<TResult> result = null;
var sqlObj = this.ToSql();
@ -666,7 +704,7 @@ namespace SqlSugar
RestoreMapping();
return result;
}
private List<string> GetPrimaryKeys()
protected List<string> GetPrimaryKeys()
{
if (this.Context.IsSystemTablesConfig)
{
@ -677,7 +715,7 @@ namespace SqlSugar
return this.EntityInfo.Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList();
}
}
private List<string> GetIdentityKeys()
protected List<string> GetIdentityKeys()
{
if (this.Context.IsSystemTablesConfig)
{
@ -688,7 +726,7 @@ namespace SqlSugar
return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList();
}
}
private void RestoreMapping()
protected void RestoreMapping()
{
if (IsAs)
{

View File

@ -85,7 +85,23 @@ namespace SqlSugar
{
if (readerValues.ContainsKey(name))
{
result.Add(name, readerValues[name]);
var addValue = readerValues[name];
if (addValue == DBNull.Value)
{
if (item.PropertyType.IsIn(PubConst.IntType, PubConst.DecType, PubConst.Dob, PubConst.ByteType))
{
addValue = 0;
}
else if (item.PropertyType == PubConst.GuidType)
{
addValue = Guid.Empty;
}
else if (item.PropertyType == PubConst.GuidType)
{
addValue = DateTime.MinValue;
}
}
result.Add(name, addValue);
}
}
}

View File

@ -21,27 +21,27 @@ namespace SqlSugar
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Where(string whereString, object whereObj = null);
ISugarQueryable<T> Where<T2>(Expression<Func<T2, bool>> expression);
ISugarQueryable<T> Where<T2, T3>(Expression<Func<T2, T3, bool>> expression);
ISugarQueryable<T> Where<T2, T3, T4>(Expression<Func<T2, T3, T4, bool>> expression);
ISugarQueryable<T> Where<T2, T3, T4, T5>(Expression<Func<T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T> Where<T2, T3, T4, T5, T6>(Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
//ISugarQueryable<T> Where<T2>(Expression<Func<T2, bool>> expression);
//ISugarQueryable<T> Where<T2, T3>(Expression<Func<T2, T3, bool>> expression);
//ISugarQueryable<T> Where<T2, T3, T4>(Expression<Func<T2, T3, T4, bool>> expression);
//ISugarQueryable<T> Where<T2, T3, T4, T5>(Expression<Func<T2, T3, T4, T5, bool>> expression);
//ISugarQueryable<T> Where<T2, T3, T4, T5, T6>(Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T> Having(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Having(string whereString, object whereObj = null);
ISugarQueryable<T> Having<T2>(Expression<Func<T2, bool>> expression);
ISugarQueryable<T> Having<T2, T3>(Expression<Func<T2, T3, bool>> expression);
ISugarQueryable<T> Having<T2, T3, T4>(Expression<Func<T2, T3, T4, bool>> expression);
ISugarQueryable<T> Having<T2, T3, T4, T5>(Expression<Func<T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T> Having<T2, T3, T4, T5, T6>(Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
//ISugarQueryable<T> Having<T2>(Expression<Func<T2, bool>> expression);
//ISugarQueryable<T> Having<T2, T3>(Expression<Func<T2, T3, bool>> expression);
//ISugarQueryable<T> Having<T2, T3, T4>(Expression<Func<T2, T3, T4, bool>> expression);
//ISugarQueryable<T> Having<T2, T3, T4, T5>(Expression<Func<T2, T3, T4, T5, bool>> expression);
//ISugarQueryable<T> Having<T2, T3, T4, T5, T6>(Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T> WhereIF(bool isWhere, string whereString, object whereObj = null);
ISugarQueryable<T> WhereIF<T2>(bool isWhere, Expression<Func<T2, bool>> expression);
ISugarQueryable<T> WhereIF<T2, T3>(bool isWhere, Expression<Func<T2, T3, bool>> expression);
ISugarQueryable<T> WhereIF<T2, T3, T4>(bool isWhere, Expression<Func<T2, T3, T4, bool>> expression);
ISugarQueryable<T> WhereIF<T2, T3, T4, T5>(bool isWhere, Expression<Func<T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T> WhereIF<T2, T3, T4, T5, T6>(bool isWhere, Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
//ISugarQueryable<T> WhereIF<T2>(bool isWhere, Expression<Func<T2, bool>> expression);
//ISugarQueryable<T> WhereIF<T2, T3>(bool isWhere, Expression<Func<T2, T3, bool>> expression);
//ISugarQueryable<T> WhereIF<T2, T3, T4>(bool isWhere, Expression<Func<T2, T3, T4, bool>> expression);
//ISugarQueryable<T> WhereIF<T2, T3, T4, T5>(bool isWhere, Expression<Func<T2, T3, T4, T5, bool>> expression);
//ISugarQueryable<T> WhereIF<T2, T3, T4, T5, T6>(bool isWhere, Expression<Func<T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T> In(params object[] pkValues);
T InSingle(object pkValue);
@ -50,10 +50,10 @@ namespace SqlSugar
ISugarQueryable<T> OrderBy(string orderFileds);
ISugarQueryable<T> OrderBy(Expression<Func<T, object>> expression, OrderByType type = OrderByType.Asc);
ISugarQueryable<T2> OrderBy<T2>(Expression<Func<T2, object>> expression, OrderByType type = OrderByType.Asc);
//ISugarQueryable<T2> OrderBy<T2>(Expression<Func<T2, object>> expression, OrderByType type = OrderByType.Asc);
ISugarQueryable<T> GroupBy(Expression<Func<T, object>> expression);
ISugarQueryable<T2> GroupBy<T2>(Expression<Func<T2, object>> expression);
//ISugarQueryable<T2> GroupBy<T2>(Expression<Func<T2, object>> expression);
ISugarQueryable<T> GroupBy(string groupFileds);
ISugarQueryable<T> Skip(int index);
@ -67,12 +67,12 @@ namespace SqlSugar
bool Any(Expression<Func<T, bool>> expression);
bool Any();
ISugarQueryable<TResult> Select<T2, TResult>(Expression<Func<T2, TResult>> expression);
ISugarQueryable<TResult> Select<T2, T3, TResult>(Expression<Func<T2, T3, TResult>> expression);
ISugarQueryable<TResult> Select<T2, T3, T4, TResult>(Expression<Func<T2, T3, T4, TResult>> expression);
ISugarQueryable<TResult> Select<T2, T3, T4, T5, TResult>(Expression<Func<T2, T3, T4, T5, TResult>> expression);
ISugarQueryable<TResult> Select<T2, T3, T4, T5, T6, TResult>(Expression<Func<T2, T3, T4, T5, T6, TResult>> expression);
ISugarQueryable<TResult> Select<T2, T3, T4, T5, T6, T7, TResult>(Expression<Func<T2, T3, T4, T5, T6, T7, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, TResult>(Expression<Func<T2, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, T3, TResult>(Expression<Func<T2, T3, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, T3, T4, TResult>(Expression<Func<T2, T3, T4, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, T3, T4, T5, TResult>(Expression<Func<T2, T3, T4, T5, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, T3, T4, T5, T6, TResult>(Expression<Func<T2, T3, T4, T5, T6, TResult>> expression);
//ISugarQueryable<TResult> Select<T2, T3, T4, T5, T6, T7, TResult>(Expression<Func<T2, T3, T4, T5, T6, T7, TResult>> expression);
ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression);
ISugarQueryable<TResult> Select<TResult>(string select) where TResult : class, new();
ISugarQueryable<T> Select(string select);
@ -109,7 +109,13 @@ namespace SqlSugar
}
public partial interface ISugarQueryable<T, T2> : ISugarQueryable<T>
{
new ISugarQueryable<T,T2> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T,T2> Where(Expression<Func<T,T2, bool>> expression);
ISugarQueryable<TResult> Select<TResult>(Expression<Func<T,T2, TResult>> expression);
new ISugarQueryable<T,T2> OrderBy(Expression<Func<T, object>> expression, OrderByType type = OrderByType.Asc);
ISugarQueryable<T,T2> OrderBy(Expression<Func<T,T2, object>> expression, OrderByType type = OrderByType.Asc);
new ISugarQueryable<T,T2> GroupBy(Expression<Func<T, object>> expression);
ISugarQueryable<T, T2> GroupBy(Expression<Func<T,T2, object>> expression);
}
public partial interface ISugarQueryable<T, T2, T3> : ISugarQueryable<T>
{