Документирование и небольшой рефакторинг модели.
This commit is contained in:
@@ -23,28 +23,45 @@ using Pf2eModel.Model.Structure.SpellRelation;
|
||||
|
||||
namespace Pf2eModel;
|
||||
|
||||
[SuppressMessage("ReSharper", "UnusedParameter.Local")]
|
||||
/// <inheritdoc/>
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public partial class Pf2eDbContext
|
||||
{
|
||||
/// <summary>
|
||||
/// Длина названия сущности.
|
||||
/// </summary>
|
||||
public const int NameLength = 255;
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.UseIdentityByDefaultColumns();
|
||||
|
||||
DefineEnums(modelBuilder);
|
||||
// DefineEnums(modelBuilder);
|
||||
DefineBase(modelBuilder);
|
||||
DefineCommon(modelBuilder);
|
||||
DefineStructure(modelBuilder);
|
||||
DefineMethods(modelBuilder);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Устанавливает связь между сущностью и её корневой сущностью.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип сущности.</typeparam>
|
||||
/// <param name="entity">Генератор настроек таблицы сущности.</param>
|
||||
private void BindEntity<T>(EntityTypeBuilder<T> entity)
|
||||
where T : class, IEntity
|
||||
{
|
||||
entity.HasOne(e => e.Entity).WithOne().HasForeignKey<T>(e => e.Id).IsRequired();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Устанавливает связь между сущностью и локализованной строкой.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Тип сущности.</typeparam>
|
||||
/// <param name="entity">Генератор настроек таблицы сущности.</param>
|
||||
/// <param name="func">Функция, выбирающая поле сущности.</param>
|
||||
/// <param name="required">Флаг, указывающий, что локализованная строка не может быть `null`.</param>
|
||||
private void BindLocaleString<T>(
|
||||
EntityTypeBuilder<T> entity,
|
||||
Expression<Func<T, LocaleString?>> func,
|
||||
@@ -59,33 +76,41 @@ public partial class Pf2eDbContext
|
||||
.IsRequired(required);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет перечисления, используемые в модели.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineEnums(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.HasPostgresEnum<ActionEnum>()
|
||||
.HasPostgresEnum<EntityType>()
|
||||
.HasPostgresEnum<EntityRarity>()
|
||||
.HasPostgresEnum<LocaleType>()
|
||||
.HasPostgresEnum<TraitType>()
|
||||
.HasPostgresEnum<ActionCategory>()
|
||||
.HasPostgresEnum<Size>()
|
||||
.HasPostgresEnum<AncestryVision>()
|
||||
.HasPostgresEnum<ActionEnum>()
|
||||
.HasPostgresEnum<AttributeValues>()
|
||||
.HasPostgresEnum<ClassProgressionType>()
|
||||
.HasPostgresEnum<ConditionGroup>()
|
||||
.HasPostgresEnum<DeityCategory>()
|
||||
.HasPostgresEnum<DeityFonts>()
|
||||
.HasPostgresEnum<DeitySanctification>()
|
||||
.HasPostgresEnum<FeatActionType>()
|
||||
.HasPostgresEnum<ElementEnum>()
|
||||
.HasPostgresEnum<EntityRarity>()
|
||||
.HasPostgresEnum<EntityType>()
|
||||
.HasPostgresEnum<FeatCategory>()
|
||||
.HasPostgresEnum<SizeEnum>()
|
||||
.HasPostgresEnum<SourceCategory>()
|
||||
.HasPostgresEnum<SpellAreaType>()
|
||||
.HasPostgresEnum<SpellDamageCategory>()
|
||||
.HasPostgresEnum<SpellDamageKinds>()
|
||||
.HasPostgresEnum<SpellTradition>()
|
||||
.HasPostgresEnum<AttributeValues>()
|
||||
.HasPostgresEnum<TrainingRank>()
|
||||
.HasPostgresEnum<SourceCategory>();
|
||||
.HasPostgresEnum<TraitType>()
|
||||
.HasPostgresEnum<VisionEnum>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет базовые сущности и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineBase(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Entity>(entity =>
|
||||
@@ -151,6 +176,10 @@ public partial class Pf2eDbContext
|
||||
modelBuilder.Entity<KeywordAlias>(entity => { });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет общие сущности и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineCommon(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Frequency>(entity => { });
|
||||
@@ -163,6 +192,10 @@ public partial class Pf2eDbContext
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет структуру сущностей и их связи.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineStructure(ModelBuilder modelBuilder)
|
||||
{
|
||||
// Action
|
||||
@@ -517,6 +550,10 @@ public partial class Pf2eDbContext
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Определяет методы, которые будут использоваться в запросах LINQ.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">Построитель модели.</param>
|
||||
private void DefineMethods(ModelBuilder modelBuilder)
|
||||
{
|
||||
MethodInfo localeSearch = typeof(Pf2eDbContext).GetMethod(
|
||||
|
||||
Reference in New Issue
Block a user