Beispiel #1
0
        protected virtual void ConfigureValueConverter <TEntity>(ModelBuilder modelBuilder, IMutableEntityType mutableEntityType)
            where TEntity : class
        {
            if (mutableEntityType.BaseType == null &&
                !typeof(TEntity).IsDefined(typeof(DisableDateTimeNormalizationAttribute), true) &&
                !typeof(TEntity).IsDefined(typeof(OwnedAttribute), true) &&
                !mutableEntityType.IsOwned())
            {
                if (LazyServiceProvider == null || Clock == null || !Clock.SupportsMultipleTimezone)
                {
                    return;
                }

                var dateTimeValueConverter = new AbpDateTimeValueConverter(Clock);

                var dateTimePropertyInfos = typeof(TEntity).GetProperties()
                                            .Where(property =>
                                                   (property.PropertyType == typeof(DateTime) ||
                                                    property.PropertyType == typeof(DateTime?)) &&
                                                   property.CanWrite &&
                                                   !property.IsDefined(typeof(DisableDateTimeNormalizationAttribute), true)
                                                   ).ToList();

                dateTimePropertyInfos.ForEach(property =>
                {
                    modelBuilder
                    .Entity <TEntity>()
                    .Property(property.Name)
                    .HasConversion(dateTimeValueConverter);
                });
            }
        }
 protected void ConfigureGlobalValueConverter <TEntity>(ModelBuilder modelBuilder, IMutableEntityType entityType)
     where TEntity : class
 {
     if (entityType.BaseType == null &&
         !typeof(TEntity).IsDefined(typeof(DisableDateTimeNormalizationAttribute), true) &&
         !typeof(TEntity).IsDefined(typeof(OwnedAttribute), true) &&
         !entityType.IsOwned())
     {
         var dateTimeValueConverter = new AbpDateTimeValueConverter();
         var dateTimePropertyInfos  = DateTimePropertyInfoHelper.GetDatePropertyInfos(typeof(TEntity));
         dateTimePropertyInfos.DateTimePropertyInfos.ForEach(property =>
         {
             modelBuilder
             .Entity <TEntity>()
             .Property(property.Name)
             .HasConversion(dateTimeValueConverter);
         });
     }
 }
        /// <summary>
        /// 把所有的时间数据按照指定的格式进行转换
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="modelBuilder"></param>
        /// <param name="entityType"></param>
        protected void ConfigureGlobalValueConverter <TEntity>(ModelBuilder modelBuilder, IMutableEntityType entityType)
            where TEntity : class
        {
            AbpDebug.WriteLine($"SelfType:{entityType},BaseType:{entityType.BaseType}");

            //这里的BaseType,只有当前类有父类的时候,才是不空的。且还有个条件:该类必须是DbContext的DbSet属性。
            if (entityType.BaseType == null &&
                !typeof(TEntity).IsDefined(typeof(DisableDateTimeNormalizationAttribute), true) &&
                !typeof(TEntity).IsDefined(typeof(OwnedAttribute), true) &&
                !entityType.IsOwned()) //OwnsOne https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities
            {
                var dateTimeValueConverter = new AbpDateTimeValueConverter();
                var dateTimePropertyInfos  = DateTimePropertyInfoHelper.GetDatePropertyInfos(typeof(TEntity));
                dateTimePropertyInfos.DateTimePropertyInfos.ForEach(property =>
                {
                    modelBuilder
                    .Entity <TEntity>()
                    .Property(property.Name)
                    .HasConversion(dateTimeValueConverter);
                });
            }
        }