@@ -193,18 +193,7 @@ private IEnumerable<IUmbracoEntity> PerformGetAll(Guid objectTypeId, Action<Sql>
193
193
194
194
public virtual IEnumerable < IUmbracoEntity > GetByQuery ( IQuery < IUmbracoEntity > query )
195
195
{
196
- //TODO: We need to fix all of this and how it handles parameters!
197
-
198
- var wheres = query . GetWhereClauses ( ) . ToArray ( ) ;
199
-
200
- var sqlClause = GetBase ( false , false , sql1 =>
201
- {
202
- //adds the additional filters
203
- foreach ( var whereClause in wheres )
204
- {
205
- sql1 . Where ( whereClause . Item1 , whereClause . Item2 ) ;
206
- }
207
- } ) ;
196
+ var sqlClause = GetBase ( false , false , null ) ;
208
197
var translator = new SqlTranslator < IUmbracoEntity > ( sqlClause , query ) ;
209
198
var sql = translator . Translate ( ) . Append ( GetGroupBy ( false , false ) ) ;
210
199
@@ -222,17 +211,7 @@ public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> que
222
211
bool isContent = objectTypeId == new Guid ( Constants . ObjectTypes . Document ) ;
223
212
bool isMedia = objectTypeId == new Guid ( Constants . ObjectTypes . Media ) ;
224
213
225
- var wheres = query . GetWhereClauses ( ) . ToArray ( ) ;
226
-
227
- var sqlClause = GetBaseWhere ( GetBase , isContent , isMedia , sql1 =>
228
- {
229
- //adds the additional filters
230
- foreach ( var whereClause in wheres )
231
- {
232
- sql1 . Where ( whereClause . Item1 , whereClause . Item2 ) ;
233
- }
234
-
235
- } , objectTypeId ) ;
214
+ var sqlClause = GetBaseWhere ( GetBase , isContent , isMedia , null , objectTypeId ) ;
236
215
237
216
var translator = new SqlTranslator < IUmbracoEntity > ( sqlClause , query ) ;
238
217
var entitySql = translator . Translate ( ) ;
@@ -241,6 +220,8 @@ public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> que
241
220
242
221
if ( isMedia )
243
222
{
223
+ var wheres = query . GetWhereClauses ( ) . ToArray ( ) ;
224
+
244
225
var mediaSql = GetFullSqlForMedia ( entitySql . Append ( GetGroupBy ( isContent , true , false ) ) , sql =>
245
226
{
246
227
//adds the additional filters
@@ -259,7 +240,8 @@ public virtual IEnumerable<IUmbracoEntity> GetByQuery(IQuery<IUmbracoEntity> que
259
240
else
260
241
{
261
242
//use dynamic so that we can get ALL properties from the SQL so we can chuck that data into our AdditionalData
262
- var dtos = _work . Database . Fetch < dynamic > ( entitySql . Append ( GetGroupBy ( isContent , false ) ) ) ;
243
+ var finalSql = entitySql . Append ( GetGroupBy ( isContent , false ) ) ;
244
+ var dtos = _work . Database . Fetch < dynamic > ( finalSql ) ;
263
245
return dtos . Select ( factory . BuildEntityFromDynamic ) . Cast < IUmbracoEntity > ( ) . ToList ( ) ;
264
246
}
265
247
}
@@ -362,10 +344,8 @@ protected virtual Sql GetBase(bool isContent, bool isMedia, Action<Sql> customFi
362
344
363
345
var entitySql = new Sql ( )
364
346
. Select ( columns . ToArray ( ) )
365
- . From ( "umbracoNode umbracoNode" )
366
- . LeftJoin ( "umbracoNode parent" ) . On ( "parent.parentID = umbracoNode.id" ) ;
367
-
368
-
347
+ . From ( "umbracoNode umbracoNode" ) ;
348
+
369
349
if ( isContent || isMedia )
370
350
{
371
351
entitySql . InnerJoin ( "cmsContent content" ) . On ( "content.nodeId = umbracoNode.id" )
@@ -378,6 +358,8 @@ protected virtual Sql GetBase(bool isContent, bool isMedia, Action<Sql> customFi
378
358
. On ( "umbracoNode.id = latest.nodeId" ) ;
379
359
}
380
360
361
+ entitySql . LeftJoin ( "umbracoNode parent" ) . On ( "parent.parentID = umbracoNode.id" ) ;
362
+
381
363
if ( customFilter != null )
382
364
{
383
365
customFilter ( entitySql ) ;
@@ -510,10 +492,16 @@ internal class UmbracoPropertyDto
510
492
[ Column ( "controlId" ) ]
511
493
public Guid DataTypeControlId { get ; set ; }
512
494
513
- [ Column ( "umbracoFile" ) ]
514
- public string UmbracoFile { get ; set ; }
515
- }
495
+ [ Column ( "propertyTypeAlias" ) ]
496
+ public string PropertyAlias { get ; set ; }
497
+
498
+ [ Column ( "dataNvarchar" ) ]
499
+ public string NVarcharValue { get ; set ; }
516
500
501
+ [ Column ( "dataNtext" ) ]
502
+ public string NTextValue { get ; set ; }
503
+ }
504
+
517
505
/// <summary>
518
506
/// This is a special relator in that it is not returning a DTO but a real resolved entity and that it accepts
519
507
/// a dynamic instance.
@@ -546,7 +534,9 @@ internal UmbracoEntity Map(dynamic a, UmbracoPropertyDto p)
546
534
Current . UmbracoProperties . Add ( new UmbracoEntity . UmbracoProperty
547
535
{
548
536
DataTypeControlId = p . DataTypeControlId ,
549
- Value = p . UmbracoFile
537
+ Value = p . NTextValue . IsNullOrWhiteSpace ( )
538
+ ? p . NVarcharValue
539
+ : p . NTextValue
550
540
} ) ;
551
541
// Return null to indicate we're not done with this UmbracoEntity yet
552
542
return null ;
@@ -568,7 +558,9 @@ internal UmbracoEntity Map(dynamic a, UmbracoPropertyDto p)
568
558
new UmbracoEntity . UmbracoProperty
569
559
{
570
560
DataTypeControlId = p . DataTypeControlId ,
571
- Value = p . UmbracoFile
561
+ Value = p . NTextValue . IsNullOrWhiteSpace ( )
562
+ ? p . NVarcharValue
563
+ : p . NTextValue
572
564
}
573
565
} ;
574
566
0 commit comments