mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Fixing [Aggregate] usage
--HG-- branch : 1.x
This commit is contained in:
+1
-1
@@ -8,5 +8,5 @@ e57f4a5dffac99ac64e195ae6ee5f2d720876b52 src/Orchard.Web/Modules/Orchard.Rules
|
|||||||
c85cd1e9651e3e0bb1ca97442ce390bf34cf3c76 src/Orchard.Web/Modules/Orchard.TaskLease
|
c85cd1e9651e3e0bb1ca97442ce390bf34cf3c76 src/Orchard.Web/Modules/Orchard.TaskLease
|
||||||
6ce83f60624b333aa6e23e756c07181d9df40094 src/Orchard.Web/Modules/Orchard.Tokens
|
6ce83f60624b333aa6e23e756c07181d9df40094 src/Orchard.Web/Modules/Orchard.Tokens
|
||||||
1b4c795960358a84c743eeb6bd778fabbdf8455e src/orchard.web/Modules/Orchard.Alias
|
1b4c795960358a84c743eeb6bd778fabbdf8455e src/orchard.web/Modules/Orchard.Alias
|
||||||
a5b0e6345d1a316e7184d1e77905e1300390756e src/orchard.web/Modules/Orchard.Projections
|
8ca57ca0486ad535c6c5d6940ad6c4ddd71130d2 src/orchard.web/Modules/Orchard.Projections
|
||||||
2f1aeab07e777f9ba2cf2ed6db7dcd2da831fd97 src/orchard.web/modules/Orchard.Fields
|
2f1aeab07e777f9ba2cf2ed6db7dcd2da831fd97 src/orchard.web/modules/Orchard.Fields
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace Orchard.ContentManagement {
|
|||||||
return _session;
|
return _session;
|
||||||
}
|
}
|
||||||
|
|
||||||
IQueryOver<ContentItemVersionRecord, TRecord> BindQueryOverByPath<TRecord, TU>(IQueryOver<ContentItemVersionRecord, TU> queryOver, string name) {
|
IQueryOver<ContentItemVersionRecord, TRecord> BindQueryOverByPath<TRecord, TU>(IQueryOver<ContentItemVersionRecord, TU> queryOver, string name, JoinType joinType = JoinType.InnerJoin) {
|
||||||
if (_joins.ContainsKey(typeof(TRecord).Name)) {
|
if (_joins.ContainsKey(typeof(TRecord).Name)) {
|
||||||
return (IQueryOver<ContentItemVersionRecord, TRecord>)_joins[typeof(TRecord).Name];
|
return (IQueryOver<ContentItemVersionRecord, TRecord>)_joins[typeof(TRecord).Name];
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ namespace Orchard.ContentManagement {
|
|||||||
Expression.Property(parameter, syntheticProperty),
|
Expression.Property(parameter, syntheticProperty),
|
||||||
parameter);
|
parameter);
|
||||||
|
|
||||||
var join = queryOver.JoinQueryOver(syntheticExpression);
|
var join = queryOver.JoinQueryOver(syntheticExpression, joinType);
|
||||||
_joins[typeof(TRecord).Name] = join;
|
_joins[typeof(TRecord).Name] = join;
|
||||||
|
|
||||||
return join;
|
return join;
|
||||||
@@ -62,13 +62,13 @@ namespace Orchard.ContentManagement {
|
|||||||
IQueryOver<ContentItemVersionRecord, ContentTypeRecord> BindTypeQueryOver() {
|
IQueryOver<ContentItemVersionRecord, ContentTypeRecord> BindTypeQueryOver() {
|
||||||
// ([ContentItemVersionRecord] >join> [ContentItemRecord]) >join> [ContentType]
|
// ([ContentItemVersionRecord] >join> [ContentItemRecord]) >join> [ContentType]
|
||||||
|
|
||||||
return BindQueryOverByPath<ContentTypeRecord, ContentItemRecord>(BindItemQueryOver(), "ContentType");
|
return BindQueryOverByPath<ContentTypeRecord, ContentItemRecord>(BindItemQueryOver(), "ContentType", JoinType.LeftOuterJoin);
|
||||||
}
|
}
|
||||||
|
|
||||||
IQueryOver<ContentItemVersionRecord, ContentItemRecord> BindItemQueryOver() {
|
IQueryOver<ContentItemVersionRecord, ContentItemRecord> BindItemQueryOver() {
|
||||||
// [ContentItemVersionRecord] >join> [ContentItemRecord]
|
// [ContentItemVersionRecord] >join> [ContentItemRecord]
|
||||||
|
|
||||||
return BindQueryOverByPath<ContentItemRecord, ContentItemVersionRecord>(BindItemVersionQueryOver(), "ContentItemRecord");
|
return BindQueryOverByPath<ContentItemRecord, ContentItemVersionRecord>(BindItemVersionQueryOver(), "ContentItemRecord", JoinType.LeftOuterJoin);
|
||||||
}
|
}
|
||||||
|
|
||||||
IQueryOver<ContentItemVersionRecord, ContentItemVersionRecord> BindItemVersionQueryOver() {
|
IQueryOver<ContentItemVersionRecord, ContentItemVersionRecord> BindItemVersionQueryOver() {
|
||||||
@@ -146,10 +146,12 @@ namespace Orchard.ContentManagement {
|
|||||||
queryOver.Take(count);
|
queryOver.Take(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ReadOnlyCollection<ContentItem>(queryOver
|
var result = queryOver
|
||||||
.List<ContentItemVersionRecord>()
|
.List<ContentItemVersionRecord>()
|
||||||
.Select(x => ContentManager.Get(x.Id, VersionOptions.VersionRecord(x.Id)))
|
.Select(x => ContentManager.Get(x.Id, VersionOptions.VersionRecord(x.Id)))
|
||||||
.ToList());
|
.ToList();
|
||||||
|
|
||||||
|
return new ReadOnlyCollection<ContentItem>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Count() {
|
int Count() {
|
||||||
@@ -291,6 +293,8 @@ namespace Orchard.ContentManagement {
|
|||||||
.GroupBy(item => item.Segments.FirstOrDefault())
|
.GroupBy(item => item.Segments.FirstOrDefault())
|
||||||
.ToDictionary(grouping => grouping.Key, StringComparer.InvariantCultureIgnoreCase);
|
.ToDictionary(grouping => grouping.Key, StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
|
||||||
|
var aggregatedProperty = false;
|
||||||
|
|
||||||
// locate hints that match properties in the ContentItemVersionRecord
|
// locate hints that match properties in the ContentItemVersionRecord
|
||||||
foreach (var hit in contentItemVersionMetadata.PropertyNames.Where(hintDictionary.ContainsKey).SelectMany(key => hintDictionary[key])) {
|
foreach (var hit in contentItemVersionMetadata.PropertyNames.Where(hintDictionary.ContainsKey).SelectMany(key => hintDictionary[key])) {
|
||||||
contentItemVersionCriteria.UnderlyingCriteria.SetFetchMode(hit.Hint, FetchMode.Eager);
|
contentItemVersionCriteria.UnderlyingCriteria.SetFetchMode(hit.Hint, FetchMode.Eager);
|
||||||
@@ -303,7 +307,7 @@ namespace Orchard.ContentManagement {
|
|||||||
hit.Segments.Take(hit.Segments.Count() - 1).Aggregate(contentItemCriteria.UnderlyingCriteria, ExtendCriteria);
|
hit.Segments.Take(hit.Segments.Count() - 1).Aggregate(contentItemCriteria.UnderlyingCriteria, ExtendCriteria);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (hintDictionary.SelectMany(x => x.Value).Any(x => x.Segments.Count() > 1))
|
if (hintDictionary.SelectMany(x => x.Value).Any(x => x.Segments.Count() > 1))
|
||||||
contentItemVersionCriteria.TransformUsing(new DistinctRootEntityResultTransformer());
|
contentItemVersionCriteria.TransformUsing(new DistinctRootEntityResultTransformer());
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Orchard.Data.Conventions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void Apply(IOneToManyCollectionInstance instance) {
|
public void Apply(IOneToManyCollectionInstance instance) {
|
||||||
instance.Fetch.Join();
|
instance.Fetch.Select();
|
||||||
instance.Cache.ReadWrite();
|
instance.Cache.ReadWrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user