Beispiel #1
0
        public static void ShadowProperties(this ModelBuilder modelBuilder)
        {
            foreach (var entityType in modelBuilder.Model.GetEntityTypes())
            {
                Type type = entityType.ClrType;

                if (typeof(ISoftDelete).IsAssignableFrom(type))
                {
                    var method = SetSoftDeleteShadowPropertyMethodInfo.MakeGenericMethod(type);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }

                if (typeof(IAuditable).IsAssignableFrom(type))
                {
                    var method = SetAuditingShadowPropertiesMethodInfo.MakeGenericMethod(type);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }

                if (typeof(IBaseEntity).IsAssignableFrom(type))
                {
                    var method = SetBaseEntityShadowPropertiesMethodInfo.MakeGenericMethod(type);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Add auditing shadow property to entities that implements ISoftDelete and IFullAuditedEntity interfaces
        /// </summary>
        /// <typeparam name="TUser">Entity that represents an User</typeparam>
        /// <typeparam name="TKey">User primary key type</typeparam>
        /// <param name="modelBuilder"></param>
        /// <param name="entities">A list with all entities</param>
        public static void Auditing <TUser, TKey>(this ModelBuilder modelBuilder, List <IMutableEntityType> entities) where TUser : class
        {
            foreach (var entityType in entities)
            {
                var type = entityType.ClrType;

                if (typeof(ISoftDelete).IsAssignableFrom(type))
                {
                    var method = SetSoftDeleteShadowPropertyMethodInfo.MakeGenericMethod(type);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }

                if (typeof(IFullAuditedEntity).IsAssignableFrom(type))
                {
                    var method = SetFullAuditingShadowPropertyPropertyMethodInfo.MakeGenericMethod(type, typeof(TUser), typeof(TKey));
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }
            }
        }