Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit cf785b0

Browse files
committed
Merge ISqlExpression and ISelectableExpression together
1 parent 80e4810 commit cf785b0

File tree

4 files changed

+26
-15
lines changed

4 files changed

+26
-15
lines changed

src/ServiceStack.OrmLite/Expressions/ReadConnectionExtensions.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,21 @@ public static List<T> Select<T>(this IDbConnection dbConn, SqlExpression<T> expr
114114
return dbConn.Exec(dbCmd => dbCmd.Select(expression));
115115
}
116116

117+
/// <summary>
118+
/// Project results from a number of joined tables into a different model
119+
/// </summary>
120+
public static List<Into> Select<Into, From>(this IDbConnection dbConn, Func<SqlExpression<From>, SqlExpression<From>> expression)
121+
{
122+
return dbConn.Exec(dbCmd => dbCmd.Select<Into, From>(expression));
123+
}
124+
117125
/// <summary>
118126
/// Returns results from using an SqlExpression lambda. E.g:
119127
/// <para>db.Select(db.From&lt;Person&gt;().Where(x =&gt; x.Age &gt; 40))</para>
120128
/// </summary>
121129
public static List<T> Select<T>(this IDbConnection dbConn, ISqlExpression expression, object anonType = null)
122130
{
123-
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(expression.ToSelectStatement(), anonType));
131+
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(expression.SelectInto<T>(), anonType));
124132
}
125133

126134
/// <summary>

src/ServiceStack.OrmLite/Expressions/ReadExtensions.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ internal static List<T> Select<T>(this IDbCommand dbCmd, Func<SqlExpression<T>,
2121
return dbCmd.ExprConvertToList<T>(sql);
2222
}
2323

24+
internal static List<Into> Select<Into, From>(this IDbCommand dbCmd, Func<SqlExpression<From>, SqlExpression<From>> expression)
25+
{
26+
var expr = OrmLiteConfig.DialectProvider.SqlExpression<From>();
27+
string sql = expression(expr).SelectInto<Into>();
28+
29+
return dbCmd.ExprConvertToList<Into>(sql);
30+
}
31+
2432
internal static List<T> Select<T>(this IDbCommand dbCmd, SqlExpression<T> expression)
2533
{
2634
string sql = expression.SelectInto<T>();
@@ -31,7 +39,7 @@ internal static List<T> Select<T>(this IDbCommand dbCmd, SqlExpression<T> expres
3139
internal static List<T> Select<T>(this IDbCommand dbCmd, Expression<Func<T, bool>> predicate)
3240
{
3341
var expr = OrmLiteConfig.DialectProvider.SqlExpression<T>();
34-
string sql = expr.Where(predicate).ToSelectStatement();
42+
string sql = expr.Where(predicate).SelectInto<T>();
3543

3644
return dbCmd.ExprConvertToList<T>(sql);
3745
}
@@ -51,7 +59,7 @@ internal static T Single<T>(this IDbCommand dbCmd, Expression<Func<T, bool>> pre
5159

5260
internal static T Single<T>(this IDbCommand dbCmd, SqlExpression<T> expression)
5361
{
54-
string sql = expression.Limit(1).ToSelectStatement();
62+
string sql = expression.Limit(1).SelectInto<T>();
5563

5664
return dbCmd.ExprConvertTo<T>(sql);
5765
}
@@ -60,7 +68,7 @@ public static TKey Scalar<T, TKey>(this IDbCommand dbCmd, Expression<Func<T, TKe
6068
{
6169
var ev = OrmLiteConfig.DialectProvider.SqlExpression<T>();
6270
ev.Select(field);
63-
var sql = ev.ToSelectStatement();
71+
var sql = ev.SelectInto<T>();
6472
return dbCmd.Scalar<TKey>(sql);
6573
}
6674

@@ -69,7 +77,7 @@ internal static TKey Scalar<T, TKey>(this IDbCommand dbCmd,
6977
{
7078
var ev = OrmLiteConfig.DialectProvider.SqlExpression<T>();
7179
ev.Select(field).Where(predicate);
72-
string sql = ev.ToSelectStatement();
80+
string sql = ev.SelectInto<T>();
7381
return dbCmd.Scalar<TKey>(sql);
7482
}
7583

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,6 @@ public virtual SqlExpression<T> From(string tables)
132132
return this;
133133
}
134134

135-
public virtual SqlExpression<T> From<Table>()
136-
{
137-
FromExpression = " \nFROM " + OrmLiteConfig.DialectProvider.GetQuotedTableName(typeof(Table).GetModelDefinition());
138-
return this;
139-
}
140-
141135
public virtual SqlExpression<T> Where()
142136
{
143137
if (underlyingExpression != null) underlyingExpression = null; //Where() clears the expression
@@ -1353,10 +1347,6 @@ protected virtual object VisitColumnAccessMethod(MethodCallExpression m)
13531347
public interface ISqlExpression
13541348
{
13551349
string ToSelectStatement();
1356-
}
1357-
1358-
public interface ISelectableSqlExpression
1359-
{
13601350
string SelectInto<TModel>();
13611351
}
13621352

src/ServiceStack.OrmLite/SqlBuilder.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,11 @@ public string ToSelectStatement()
219219
{
220220
return RawSql;
221221
}
222+
223+
public string SelectInto<T>()
224+
{
225+
return RawSql;
226+
}
222227
}
223228

224229
public Template AddTemplate(string sql, object parameters = null)

0 commit comments

Comments
 (0)