//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 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); } }); }
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ private static string GetSchemaName(this IMutableEntityType entity) => entity.FindAnnotation($"{TranslationAnnotationNames.Schema}")?.Value.ToString() ?? TranslationConfiguration.LanguageTableConfiguration?.TranslationsSchema ?? entity.GetSchema();
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ private static string GetTranslationTableName(this IMutableEntityType entity) => entity.FindAnnotation($"{TranslationAnnotationNames.Table}")?.Value.ToString() ?? entity.GetTableName() + (entity.FindAnnotation($"{TranslationAnnotationNames.Suffix}")?.Value ?? TranslationConfiguration.Suffix);