示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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
        }
示例#4
0
        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);
        }