public static ObjectExtensionManager AddOrUpdateProperty <TObject, TProperty>( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] string propertyName, [CanBeNull] Action <ObjectExtensionPropertyInfo> configureAction = null) where TObject : IHasExtraProperties { return(objectExtensionManager.AddOrUpdateProperty( typeof(TObject), typeof(TProperty), propertyName, configureAction )); }
public static ObjectExtensionPropertyInfo GetPropertyOrNull( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type objectType, [NotNull] string propertyName) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); Check.NotNull(objectType, nameof(objectType)); Check.NotNull(propertyName, nameof(propertyName)); return(objectExtensionManager .GetOrNull(objectType)? .GetPropertyOrNull(propertyName)); }
public static ObjectExtensionManager MapEfCoreProperty <TEntity, TProperty>( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] string propertyName, [CanBeNull] Action <PropertyBuilder> propertyBuildAction) where TEntity : IHasExtraProperties, IEntity { return(objectExtensionManager.MapEfCoreProperty( typeof(TEntity), typeof(TProperty), propertyName, propertyBuildAction )); }
public static ObjectExtensionManager MapEfEntity( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type entityType, [NotNull] Action <EntityTypeBuilder> entityTypeBuildAction) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); return(objectExtensionManager.AddOrUpdate( entityType, options => { options.MapEfEntity(entityTypeBuildAction); })); }
public static ObjectExtensionManager MapEfProperty( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type entityType, [NotNull] Type propertyType, [NotNull] string propertyName) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); return(objectExtensionManager.AddOrUpdateProperty( entityType, propertyType, propertyName, options => { options.MapEf(); } )); }
public static ImmutableList <ObjectExtensionPropertyInfo> GetProperties( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type objectType) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); Check.NotNull(objectType, nameof(objectType)); var extensionInfo = objectExtensionManager.GetOrNull(objectType); if (extensionInfo == null) { return(EmptyPropertyList); } return(extensionInfo.GetProperties()); }
public static void ConfigureEfEntity( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] EntityTypeBuilder typeBuilder) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); Check.NotNull(typeBuilder, nameof(typeBuilder)); var objectExtension = objectExtensionManager.GetOrNull(typeBuilder.Metadata.ClrType); if (objectExtension == null) { return; } var efEntityMappings = objectExtension.GetEfEntityMappings(); foreach (var efEntityMapping in efEntityMappings) { efEntityMapping.EntityTypeBuildAction?.Invoke(typeBuilder); } foreach (var property in objectExtension.GetProperties()) { var efMapping = property.GetEfMappingOrNull(); if (efMapping == null) { continue; } /* Prevent multiple calls to the entityTypeBuilder.Property(...) method */ if (typeBuilder.Metadata.FindProperty(property.Name) != null) { continue; } var propertyBuilder = typeBuilder.Property(property.Type, property.Name); efMapping.EntityTypeAndPropertyBuildAction?.Invoke(typeBuilder, propertyBuilder); #pragma warning disable 618 efMapping.PropertyBuildAction?.Invoke(propertyBuilder); #pragma warning restore 618 } }
public static ObjectExtensionManager AddOrUpdateProperty( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type objectType, [NotNull] Type propertyType, [NotNull] string propertyName, [CanBeNull] Action <ObjectExtensionPropertyInfo> configureAction = null) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); return(objectExtensionManager.AddOrUpdate( objectType, options => { options.AddOrUpdateProperty( propertyType, propertyName, configureAction ); })); }
public static ObjectExtensionManager MapEfProperty( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type entityType, [NotNull] Type propertyType, [NotNull] string propertyName, [CanBeNull] Action <EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction) { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); return(objectExtensionManager.AddOrUpdateProperty( entityType, propertyType, propertyName, options => { options.MapEf( entityTypeAndPropertyBuildAction ); } )); }
public static ObjectExtensionManager AddOrUpdateProperty( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] Type[] objectTypes, [NotNull] Type propertyType, [NotNull] string propertyName, [CanBeNull] Action <ObjectExtensionPropertyInfo> configureAction = null) { Check.NotNull(objectTypes, nameof(objectTypes)); foreach (var objectType in objectTypes) { objectExtensionManager.AddOrUpdateProperty( objectType, propertyType, propertyName, configureAction ); } return(objectExtensionManager); }
public static void ConfigureEfDbContext <TDbContext>( [NotNull] this ObjectExtensionManager objectExtensionManager, [NotNull] ModelBuilder modelBuilder) where TDbContext : DbContext { Check.NotNull(objectExtensionManager, nameof(objectExtensionManager)); Check.NotNull(modelBuilder, nameof(modelBuilder)); var objectExtension = objectExtensionManager.GetOrNull(typeof(TDbContext)); if (objectExtension == null) { return; } var efDbContextMappings = objectExtension.GetEfDbContextMappings(); foreach (var efDbContextMapping in efDbContextMappings) { efDbContextMapping.ModelBuildAction?.Invoke(modelBuilder); } }
public static ImmutableList <ObjectExtensionPropertyInfo> GetProperties <TObject>( [NotNull] this ObjectExtensionManager objectExtensionManager) { return(objectExtensionManager.GetProperties(typeof(TObject))); }