protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new BlogConfiguration()); modelBuilder.ApplyConfiguration(new PostConfiguration()); foreach (var type in _entityTypeProvider.GetEntityTypes()) { var method = SetGlobalQueryMethod.MakeGenericMethod(type); method.Invoke(this, new object[] { modelBuilder }); } base.OnModelCreating(modelBuilder); }
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity <Playlist>().HasKey(e => e.Id); modelBuilder.Entity <Playlist>().HasQueryFilter(e => !e.IsDeleted); modelBuilder.Entity <Song>().HasKey(e => e.Id); modelBuilder.Entity <Song>().HasQueryFilter(e => !e.IsDeleted); foreach (var type in _entityTypeProvider.GetEntityTypes()) { var method = SetGlobalQueryMethod.MakeGenericMethod(type); method.Invoke(this, new object[] { modelBuilder }); } base.OnModelCreating(modelBuilder); }
protected override void OnModelCreating(ModelBuilder modelBuilder) { #region entities configuration modelBuilder.ApplyConfiguration(new ProjectTagConfiguration()); modelBuilder.ApplyConfiguration(new RelationTagConfiguration()); #endregion foreach (var type in _entityTypeProvider.GetEntityTypes()) { var method = SetGlobalQueryMethod.MakeGenericMethod(type); method.Invoke(this, new object[] { modelBuilder }); } base.OnModelCreating(modelBuilder); #region Soft delete configuration /* * foreach (var entityType in modelBuilder.Model.GetEntityTypes()) * { * * // 1. Add the IsDeleted property * entityType.GetOrAddProperty("IsDeleted", typeof(bool)); * * // 2. Create the query filter * var parameter = Expression.Parameter(entityType.ClrType); * * // EF.Property<bool>(post, "IsDeleted") * var propertyMethodInfo = typeof(EF).GetMethod("Property").MakeGenericMethod(typeof(bool)); * var isDeletedProperty = Expression.Call(propertyMethodInfo, parameter, Expression.Constant("IsDeleted")); * * // EF.Property<bool>(post, "IsDeleted") == false * BinaryExpression compareExpression = Expression.MakeBinary(ExpressionType.Equal, isDeletedProperty, Expression.Constant(false)); * * // post => EF.Property<bool>(post, "IsDeleted") == false * var lambda = Expression.Lambda(compareExpression, parameter); * * modelBuilder.Entity(entityType.ClrType).HasQueryFilter(lambda); * } */ #endregion }
protected override void OnModelCreating(ModelBuilder builder) { foreach (var type in _entityManager.GetEntityTypes()) { if (builder.Model.FindEntityType(type) == null)//防止重复附加模型,否则会在生成指令中报错 { builder.Model.AddEntityType(type); } } foreach (var type in _entityManager.GetEntityTypeConfigurations()) { dynamic mappingInstance = Activator.CreateInstance(type); builder.ApplyConfiguration(mappingInstance); } //foreach (var type in builder.Model.GetEntityTypes()) //{ // type.Relational().TableName = $"Test_{type.Relational().TableName}"; //} base.OnModelCreating(builder); }