Пример #1
0
        //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

        private static void ConfigureEntity <TType>(ModelBuilder modelBuilder, IMutableEntityType entity, Type languageEntity,
                                                    IMutableEntityType languageBuilder, List <IMutableProperty> propertiesWithTranslation)
            where TType : class
        {
            var table         = entity.GetTranslationTableName();
            var schema        = entity.GetSchemaName();
            var configuration = TranslationConfiguration.TranslationEntities[entity.ClrType.FullName];

            configuration.Schema         = schema;
            configuration.TableName      = table;
            configuration.SoftDelete     = (bool)(entity.FindAnnotation(TranslationAnnotationNames.SoftDelete)?.Value ?? TranslationConfiguration.SoftDelete);
            configuration.DeleteBehavior = (DeleteBehavior)(entity.FindAnnotation(TranslationAnnotationNames.DeleteBehavior)?.Value ?? TranslationConfiguration.DeleteBehavior);
            configuration.OnSoftDeleteSetPropertyValue = (IDictionary <string, object>)entity.FindAnnotation(TranslationAnnotationNames.OnSoftDeleteSetPropertyValue)?.Value
                                                         ?? (IDictionary <string, object>)TranslationConfiguration.OnSoftDeleteSetPropertyValue;

            modelBuilder.Entity <TType>(translationConfiguration =>
            {
                translationConfiguration.ToTable(table, schema);

                if (languageEntity != null)
                {
                    languageBuilder = modelBuilder.Entity(languageEntity).Metadata;
                }

                translationConfiguration.ConfigureKeys(entity, languageBuilder, configuration);

                foreach (var property in propertiesWithTranslation)
                {
                    translationConfiguration.ConfigureProperty(property);
                }
            });
        }
Пример #2
0
        //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

        private static string GetSchemaName(this IMutableEntityType entity)
        => entity.FindAnnotation($"{TranslationAnnotationNames.Schema}")?.Value.ToString()
        ?? TranslationConfiguration.LanguageTableConfiguration?.TranslationsSchema
        ?? entity.GetSchema();
Пример #3
0
        //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

        private static string GetTranslationTableName(this IMutableEntityType entity)
        => entity.FindAnnotation($"{TranslationAnnotationNames.Table}")?.Value.ToString()
        ?? entity.GetTableName() +
        (entity.FindAnnotation($"{TranslationAnnotationNames.Suffix}")?.Value
         ?? TranslationConfiguration.Suffix);