protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext context) { base.OnModelCreating(modelBuilder, context); foreach (var foreignKey in modelBuilder.Model .GetEntityTypes() .SelectMany(e => MutableEntityTypeExtensions.GetDeclaredForeignKeys(e)) .Where(e => e.DeleteBehavior == DeleteBehavior.Cascade)) { foreignKey.DeleteBehavior = DeleteBehavior.ClientCascade; } }
private void SetEFGlobalQeuryFilters(ModelBuilder modelBuilder) { foreach (var entityType in modelBuilder.Model.GetEntityTypes()) { var isDeletedProperty = entityType.FindProperty(nameof(BaseTable.IsDeleted)); if (isDeletedProperty != null && isDeletedProperty.ClrType == typeof(bool)) { var parameter = Expression.Parameter(entityType.ClrType, "p"); var _memberExpression = Expression.Property(parameter, isDeletedProperty.PropertyInfo); var _matchExpression = Expression.Equal(_memberExpression, Expression.Constant(false)); var filter = Expression.Lambda(_matchExpression, parameter); MutableEntityTypeExtensions.SetQueryFilter(entityType, filter); } } }