diff --git a/src/Orchard/Data/Conventions/CacheConvention.cs b/src/Orchard/Data/Conventions/CacheConventions.cs similarity index 66% rename from src/Orchard/Data/Conventions/CacheConvention.cs rename to src/Orchard/Data/Conventions/CacheConventions.cs index 0e717dd58..805e38ce9 100644 --- a/src/Orchard/Data/Conventions/CacheConvention.cs +++ b/src/Orchard/Data/Conventions/CacheConventions.cs @@ -7,13 +7,19 @@ using FluentNHibernate.Conventions.Instances; using Orchard.Environment.ShellBuilders.Models; namespace Orchard.Data.Conventions { - public class CacheConvention : IClassConvention, IConventionAcceptance { + public class CacheConventions : + IClassConvention, IClassConventionAcceptance, + ICollectionConvention, ICollectionConventionAcceptance, + IHasManyConvention, IHasManyConventionAcceptance, + IHasManyToManyConvention, IHasManyToManyConventionAcceptance { + private readonly IEnumerable _descriptors; - public CacheConvention(IEnumerable descriptors) { + public CacheConventions(IEnumerable descriptors) { _descriptors = descriptors; } + public void Apply(IClassInstance instance) { instance.Cache.ReadWrite(); } @@ -21,14 +27,7 @@ namespace Orchard.Data.Conventions { public void Accept(IAcceptanceCriteria criteria) { criteria.Expect(x => _descriptors.Any(d => d.Type.Name == x.EntityType.Name)); } - } - public class CacheableCollectionConvention : IHasManyConvention, IHasManyConventionAcceptance, IHasManyToManyConvention { - private readonly IEnumerable _descriptors; - - public CacheableCollectionConvention(IEnumerable descriptors) { - _descriptors = descriptors; - } public void Apply(IOneToManyCollectionInstance instance) { instance.Cache.ReadWrite(); @@ -46,5 +45,14 @@ namespace Orchard.Data.Conventions { public void Accept(IAcceptanceCriteria criteria) { criteria.Expect(x => _descriptors.Any(d => d.Type.Name == x.EntityType.Name)); } + + + public void Apply(ICollectionInstance instance) { + instance.Cache.ReadWrite(); + } + + public void Accept(IAcceptanceCriteria criteria) { + criteria.Expect(x => _descriptors.Any(d => d.Type.Name == x.EntityType.Name)); + } } } \ No newline at end of file diff --git a/src/Orchard/Data/Providers/AbstractDataServicesProvider.cs b/src/Orchard/Data/Providers/AbstractDataServicesProvider.cs index ec796f65a..9251bcc46 100644 --- a/src/Orchard/Data/Providers/AbstractDataServicesProvider.cs +++ b/src/Orchard/Data/Providers/AbstractDataServicesProvider.cs @@ -62,7 +62,7 @@ namespace Orchard.Data.Providers { // identical type names from different namespaces can be mapped without ambiguity .Conventions.Setup(x => x.Add(AutoImport.Never())) .Conventions.Add(new RecordTableNameConvention(recordDescriptors)) - .Conventions.Add(new CacheConvention(recordDescriptors), new CacheableCollectionConvention(recordDescriptors)) + .Conventions.Add(new CacheConventions(recordDescriptors)) .Alterations(alt => { foreach (var recordAssembly in recordDescriptors.Select(x => x.Type.Assembly).Distinct()) { alt.Add(new AutoMappingOverrideAlteration(recordAssembly)); diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index ad5d681ce..5a041610c 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -191,7 +191,7 @@ - +