Browse Source

Add EntityTypeAndPropertyBuildAction to the ObjectExtensionPropertyInfoEfCoreMappingOptions.

pull/4893/head
maliming 6 years ago
parent
commit
9b9c66034a
  1. 36
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionInfoExtensions.cs
  2. 45
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionManagerExtensions.cs
  3. 18
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionPropertyInfoExtensions.cs
  4. 9
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfoEfCoreMappingOptions.cs

36
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionInfoExtensions.cs

@ -9,7 +9,7 @@ namespace Volo.Abp.ObjectExtending
public static ObjectExtensionInfo MapEfCoreProperty<TProperty>(
[NotNull] this ObjectExtensionInfo objectExtensionInfo,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction)
{
return objectExtensionInfo.MapEfCoreProperty(
typeof(TProperty),
@ -22,7 +22,7 @@ namespace Volo.Abp.ObjectExtending
[NotNull] this ObjectExtensionInfo objectExtensionInfo,
[NotNull] Type propertyType,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction)
{
Check.NotNull(objectExtensionInfo, nameof(objectExtensionInfo));
@ -37,5 +37,37 @@ namespace Volo.Abp.ObjectExtending
}
);
}
public static ObjectExtensionInfo MapEfCoreProperty<TProperty>(
[NotNull] this ObjectExtensionInfo objectExtensionInfo,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction)
{
return objectExtensionInfo.MapEfCoreProperty(
typeof(TProperty),
propertyName,
entityTypeAndPropertyBuildAction
);
}
public static ObjectExtensionInfo MapEfCoreProperty(
[NotNull] this ObjectExtensionInfo objectExtensionInfo,
[NotNull] Type propertyType,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction)
{
Check.NotNull(objectExtensionInfo, nameof(objectExtensionInfo));
return objectExtensionInfo.AddOrUpdateProperty(
propertyType,
propertyName,
options =>
{
options.MapEfCore(
entityTypeAndPropertyBuildAction
);
}
);
}
}
}

45
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionManagerExtensions.cs

@ -1,4 +1,4 @@
using System;
using System;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Volo.Abp.Data;
@ -11,7 +11,7 @@ namespace Volo.Abp.ObjectExtending
public static ObjectExtensionManager MapEfCoreProperty<TEntity, TProperty>(
[NotNull] this ObjectExtensionManager objectExtensionManager,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction = null)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction = null)
where TEntity : IHasExtraProperties, IEntity
{
return objectExtensionManager.MapEfCoreProperty(
@ -27,7 +27,7 @@ namespace Volo.Abp.ObjectExtending
[NotNull] Type entityType,
[NotNull] Type propertyType,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction = null)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction = null)
{
Check.NotNull(objectExtensionManager, nameof(objectExtensionManager));
@ -44,6 +44,42 @@ namespace Volo.Abp.ObjectExtending
);
}
public static ObjectExtensionManager MapEfCoreProperty<TEntity, TProperty>(
[NotNull] this ObjectExtensionManager objectExtensionManager,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction = null)
where TEntity : IHasExtraProperties, IEntity
{
return objectExtensionManager.MapEfCoreProperty(
typeof(TEntity),
typeof(TProperty),
propertyName,
entityTypeAndPropertyBuildAction
);
}
public static ObjectExtensionManager MapEfCoreProperty(
[NotNull] this ObjectExtensionManager objectExtensionManager,
[NotNull] Type entityType,
[NotNull] Type propertyType,
[NotNull] string propertyName,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction = null)
{
Check.NotNull(objectExtensionManager, nameof(objectExtensionManager));
return objectExtensionManager.AddOrUpdateProperty(
entityType,
propertyType,
propertyName,
options =>
{
options.MapEfCore(
entityTypeAndPropertyBuildAction
);
}
);
}
public static void ConfigureEfCoreEntity(
[NotNull] this ObjectExtensionManager objectExtensionManager,
[NotNull] EntityTypeBuilder typeBuilder)
@ -73,7 +109,8 @@ namespace Volo.Abp.ObjectExtending
var propertyBuilder = typeBuilder.Property(property.Type, property.Name);
efCoreMapping.PropertyBuildAction?.Invoke(typeBuilder, propertyBuilder);
efCoreMapping.EntityTypeAndPropertyBuildAction?.Invoke(typeBuilder, propertyBuilder);
efCoreMapping.PropertyBuildAction?.Invoke(propertyBuilder);
}
}
}

18
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/EfCoreObjectExtensionPropertyInfoExtensions.cs

@ -12,7 +12,7 @@ namespace Volo.Abp.ObjectExtending
[NotNull]
public static ObjectExtensionPropertyInfo MapEfCore(
[NotNull] this ObjectExtensionPropertyInfo propertyExtension,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction = null)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction = null)
{
Check.NotNull(propertyExtension, nameof(propertyExtension));
@ -25,6 +25,22 @@ namespace Volo.Abp.ObjectExtending
return propertyExtension;
}
[NotNull]
public static ObjectExtensionPropertyInfo MapEfCore(
[NotNull] this ObjectExtensionPropertyInfo propertyExtension,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction = null)
{
Check.NotNull(propertyExtension, nameof(propertyExtension));
propertyExtension.Configuration[EfCorePropertyConfigurationName] =
new ObjectExtensionPropertyInfoEfCoreMappingOptions(
propertyExtension,
entityTypeAndPropertyBuildAction: entityTypeAndPropertyBuildAction
);
return propertyExtension;
}
[CanBeNull]
public static ObjectExtensionPropertyInfoEfCoreMappingOptions GetEfCoreMappingOrNull(
[NotNull] this ObjectExtensionPropertyInfo propertyExtension)

9
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/ObjectExtending/ObjectExtensionPropertyInfoEfCoreMappingOptions.cs

@ -13,15 +13,20 @@ namespace Volo.Abp.ObjectExtending
public ObjectExtensionInfo ObjectExtension => ExtensionProperty.ObjectExtension;
[CanBeNull]
public Action<EntityTypeBuilder, PropertyBuilder> PropertyBuildAction { get; set; }
public Action<EntityTypeBuilder, PropertyBuilder> EntityTypeAndPropertyBuildAction { get; set; }
[CanBeNull]
public Action<PropertyBuilder> PropertyBuildAction { get; set; }
public ObjectExtensionPropertyInfoEfCoreMappingOptions(
[NotNull] ObjectExtensionPropertyInfo extensionProperty,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> propertyBuildAction = null)
[CanBeNull] Action<PropertyBuilder> propertyBuildAction = null,
[CanBeNull] Action<EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction = null)
{
ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));
PropertyBuildAction = propertyBuildAction;
EntityTypeAndPropertyBuildAction = entityTypeAndPropertyBuildAction;
}
}
}

Loading…
Cancel
Save