public static void ShadowProperties(this ModelBuilder modelBuilder)
        {
            foreach (var tp in modelBuilder.Model.GetEntityTypes())
            {
                Type t = tp.ClrType;

                // set auditing properties
                if (typeof(IAuditable).IsAssignableFrom(t))
                {
                    var method = SetAuditingShadowPropertiesMethodInfo.MakeGenericMethod(t);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }

                // set tenant properties
//                if (typeof(ITenant).IsAssignableFrom(t))
//                {
//                    var method = SetTenantShadowPropertyMethodInfo.MakeGenericMethod(t);
//                    method.Invoke(modelBuilder, new object[] { modelBuilder });
//
//                    SetTenantIdClusteredIndexsMethodInfo.MakeGenericMethod(t).Invoke(modelBuilder, new object[] { modelBuilder });
//                }

                // set soft delete property
                if (typeof(ISoftDelete).IsAssignableFrom(t))
                {
                    var method = SetIsDeletedShadowPropertyMethodInfo.MakeGenericMethod(t);
                    method.Invoke(modelBuilder, new object[] { modelBuilder });
                }
            }
        }
Example #2
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 });
                }
            }
        }