Процессор домена

This commit is contained in:
2025-09-13 16:48:44 +04:00
parent 8290183220
commit 90597560c5
55 changed files with 1319 additions and 57 deletions
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
namespace Pf2eModel.Migrations
{
[DbContext(typeof(Pf2eDbContext))]
[Migration("20250913071004_1")]
[Migration("20250913084534_1")]
partial class _1
{
/// <inheritdoc />
@@ -34,7 +34,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestry", "ancestry-feature", "archetype", "bonus", "calling", "campaign-feature", "class", "class-feature", "curse", "deityboon", "general", "pfsboon", "skill", "uncategorized" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "hobby", "other", "russian" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size_enum", new[] { "huge", "large", "medium", "small", "tiny" });
@@ -1195,6 +1195,12 @@ namespace Pf2eModel.Migrations
.HasColumnOrder(2)
.HasComment("Идентификатор божества");
b.Property<int>("DomainId")
.HasColumnType("integer")
.HasColumnName("domain_id")
.HasColumnOrder(4)
.HasComment("Идентификатор домена");
b.Property<bool>("IsPrimary")
.HasColumnType("boolean")
.HasColumnName("is_primary")
@@ -1206,7 +1212,7 @@ namespace Pf2eModel.Migrations
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("value")
.HasColumnOrder(4);
.HasColumnOrder(5);
b.HasKey("Id")
.HasName("pk_deity_domains");
@@ -1214,6 +1220,9 @@ namespace Pf2eModel.Migrations
b.HasIndex("DeityId")
.HasDatabaseName("ix_deity_domains_deity_id");
b.HasIndex("DomainId")
.HasDatabaseName("ix_deity_domains_domain_id");
b.ToTable("deity_domains", (string)null);
});
@@ -1292,6 +1301,56 @@ namespace Pf2eModel.Migrations
b.ToTable("deity_weapons", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id")
.HasColumnOrder(1)
.HasComment("Идентификатор");
b.Property<int?>("AdvancedApocryphalSpellId")
.HasColumnType("integer")
.HasColumnName("advanced_apocryphal_spell_id")
.HasColumnOrder(5)
.HasComment("Продвинутое апокрифическое заклинание домена");
b.Property<int>("AdvancedDomainSpellId")
.HasColumnType("integer")
.HasColumnName("advanced_domain_spell_id")
.HasColumnOrder(3)
.HasComment("Продвинутое заклинание домена");
b.Property<int?>("ApocryphalSpellId")
.HasColumnType("integer")
.HasColumnName("apocryphal_spell_id")
.HasColumnOrder(4)
.HasComment("Апокрифическое заклинание домена");
b.Property<int>("DomainSpellId")
.HasColumnType("integer")
.HasColumnName("domain_spell_id")
.HasColumnOrder(2)
.HasComment("Заклинание домена");
b.HasKey("Id")
.HasName("pk_domains");
b.HasIndex("AdvancedApocryphalSpellId")
.HasDatabaseName("ix_domains_advanced_apocryphal_spell_id");
b.HasIndex("AdvancedDomainSpellId")
.HasDatabaseName("ix_domains_advanced_domain_spell_id");
b.HasIndex("ApocryphalSpellId")
.HasDatabaseName("ix_domains_apocryphal_spell_id");
b.HasIndex("DomainSpellId")
.HasDatabaseName("ix_domains_domain_spell_id");
b.ToTable("domains", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.Property<int>("Id")
@@ -2406,7 +2465,16 @@ namespace Pf2eModel.Migrations
.IsRequired()
.HasConstraintName("fk_deity_domains_deities_deity_id");
b.HasOne("Pf2eModel.Model.Structure.Domain", "Domain")
.WithMany("DeityDomains")
.HasForeignKey("DomainId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_deity_domains_domains_domain_id");
b.Navigation("Deity");
b.Navigation("Domain");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeitySpell", b =>
@@ -2442,6 +2510,52 @@ namespace Pf2eModel.Migrations
b.Navigation("Deity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.HasOne("Pf2eModel.Model.Structure.Spell", "AdvancedApocryphalSpell")
.WithMany()
.HasForeignKey("AdvancedApocryphalSpellId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_domains_spells_advanced_apocryphal_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "AdvancedDomainSpell")
.WithMany()
.HasForeignKey("AdvancedDomainSpellId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_spells_advanced_domain_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "ApocryphalSpell")
.WithMany()
.HasForeignKey("ApocryphalSpellId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_domains_spells_apocryphal_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "DomainSpell")
.WithMany()
.HasForeignKey("DomainSpellId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_spells_domain_spell_id");
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
.WithOne()
.HasForeignKey("Pf2eModel.Model.Structure.Domain", "Id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_entities_id");
b.Navigation("AdvancedApocryphalSpell");
b.Navigation("AdvancedDomainSpell");
b.Navigation("ApocryphalSpell");
b.Navigation("DomainSpell");
b.Navigation("Entity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
@@ -2732,6 +2846,11 @@ namespace Pf2eModel.Migrations
b.Navigation("DeityWeapons");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.Navigation("DeityDomains");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.Navigation("FeatPrerequisites");
@@ -24,7 +24,7 @@ namespace Pf2eModel.Migrations
.Annotation("Npgsql:Enum:deity_sanctification", "any,holy,unholy")
.Annotation("Npgsql:Enum:element_enum", "air,earth,fire,metal,universal,water,wood")
.Annotation("Npgsql:Enum:entity_rarity", "common,rare,uncommon,unique")
.Annotation("Npgsql:Enum:entity_type", "action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,feat,heritage,language,ritual,rule,spell,subclass,subclass_group,trait,unknown")
.Annotation("Npgsql:Enum:entity_type", "action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,domain,feat,heritage,language,ritual,rule,spell,subclass,subclass_group,trait,unknown")
.Annotation("Npgsql:Enum:feat_category", "ancestry,ancestry-feature,archetype,bonus,calling,campaign-feature,class,class-feature,curse,deityboon,general,pfsboon,skill,uncategorized")
.Annotation("Npgsql:Enum:locale_type", "english,hobby,other,russian")
.Annotation("Npgsql:Enum:size_enum", "huge,large,medium,small,tiny")
@@ -792,27 +792,6 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "deity_domains",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
deity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор божества"),
is_primary = table.Column<bool>(type: "boolean", nullable: false, comment: "Флаг основного домена"),
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_deity_domains", x => x.id);
table.ForeignKey(
name: "fk_deity_domains_deities_deity_id",
column: x => x.deity_id,
principalTable: "deities",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "deity_training",
columns: table => new
@@ -1003,6 +982,51 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "domains",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
domain_spell_id = table.Column<int>(type: "integer", nullable: false, comment: "Заклинание домена"),
advanced_domain_spell_id = table.Column<int>(type: "integer", nullable: false, comment: "Продвинутое заклинание домена"),
apocryphal_spell_id = table.Column<int>(type: "integer", nullable: true, comment: "Апокрифическое заклинание домена"),
advanced_apocryphal_spell_id = table.Column<int>(type: "integer", nullable: true, comment: "Продвинутое апокрифическое заклинание домена")
},
constraints: table =>
{
table.PrimaryKey("pk_domains", x => x.id);
table.ForeignKey(
name: "fk_domains_entities_id",
column: x => x.id,
principalTable: "entities",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_domains_spells_advanced_apocryphal_spell_id",
column: x => x.advanced_apocryphal_spell_id,
principalTable: "spells",
principalColumn: "id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "fk_domains_spells_advanced_domain_spell_id",
column: x => x.advanced_domain_spell_id,
principalTable: "spells",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_domains_spells_apocryphal_spell_id",
column: x => x.apocryphal_spell_id,
principalTable: "spells",
principalColumn: "id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "fk_domains_spells_domain_spell_id",
column: x => x.domain_spell_id,
principalTable: "spells",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "spell_areas",
columns: table => new
@@ -1146,6 +1170,34 @@ namespace Pf2eModel.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "deity_domains",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
deity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор божества"),
is_primary = table.Column<bool>(type: "boolean", nullable: false, comment: "Флаг основного домена"),
domain_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор домена"),
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_deity_domains", x => x.id);
table.ForeignKey(
name: "fk_deity_domains_deities_deity_id",
column: x => x.deity_id,
principalTable: "deities",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_deity_domains_domains_domain_id",
column: x => x.domain_id,
principalTable: "domains",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "subclass_provided_entities",
columns: table => new
@@ -1273,6 +1325,11 @@ namespace Pf2eModel.Migrations
table: "deity_domains",
column: "deity_id");
migrationBuilder.CreateIndex(
name: "ix_deity_domains_domain_id",
table: "deity_domains",
column: "domain_id");
migrationBuilder.CreateIndex(
name: "ix_deity_spells_deity_id",
table: "deity_spells",
@@ -1293,6 +1350,26 @@ namespace Pf2eModel.Migrations
table: "deity_weapons",
column: "deity_id");
migrationBuilder.CreateIndex(
name: "ix_domains_advanced_apocryphal_spell_id",
table: "domains",
column: "advanced_apocryphal_spell_id");
migrationBuilder.CreateIndex(
name: "ix_domains_advanced_domain_spell_id",
table: "domains",
column: "advanced_domain_spell_id");
migrationBuilder.CreateIndex(
name: "ix_domains_apocryphal_spell_id",
table: "domains",
column: "apocryphal_spell_id");
migrationBuilder.CreateIndex(
name: "ix_domains_domain_spell_id",
table: "domains",
column: "domain_spell_id");
migrationBuilder.CreateIndex(
name: "ix_entity_aliases_entity_id",
table: "entity_aliases",
@@ -1521,6 +1598,9 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "backgrounds");
migrationBuilder.DropTable(
name: "domains");
migrationBuilder.DropTable(
name: "deities");
@@ -1542,9 +1622,6 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "rituals");
migrationBuilder.DropTable(
name: "spells");
migrationBuilder.DropTable(
name: "subclasses");
@@ -1554,6 +1631,9 @@ namespace Pf2eModel.Migrations
migrationBuilder.DropTable(
name: "feats");
migrationBuilder.DropTable(
name: "spells");
migrationBuilder.DropTable(
name: "subclass_groups");
@@ -31,7 +31,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestry", "ancestry-feature", "archetype", "bonus", "calling", "campaign-feature", "class", "class-feature", "curse", "deityboon", "general", "pfsboon", "skill", "uncategorized" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "locale_type", new[] { "english", "hobby", "other", "russian" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size_enum", new[] { "huge", "large", "medium", "small", "tiny" });
@@ -1192,6 +1192,12 @@ namespace Pf2eModel.Migrations
.HasColumnOrder(2)
.HasComment("Идентификатор божества");
b.Property<int>("DomainId")
.HasColumnType("integer")
.HasColumnName("domain_id")
.HasColumnOrder(4)
.HasComment("Идентификатор домена");
b.Property<bool>("IsPrimary")
.HasColumnType("boolean")
.HasColumnName("is_primary")
@@ -1203,7 +1209,7 @@ namespace Pf2eModel.Migrations
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("value")
.HasColumnOrder(4);
.HasColumnOrder(5);
b.HasKey("Id")
.HasName("pk_deity_domains");
@@ -1211,6 +1217,9 @@ namespace Pf2eModel.Migrations
b.HasIndex("DeityId")
.HasDatabaseName("ix_deity_domains_deity_id");
b.HasIndex("DomainId")
.HasDatabaseName("ix_deity_domains_domain_id");
b.ToTable("deity_domains", (string)null);
});
@@ -1289,6 +1298,56 @@ namespace Pf2eModel.Migrations
b.ToTable("deity_weapons", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id")
.HasColumnOrder(1)
.HasComment("Идентификатор");
b.Property<int?>("AdvancedApocryphalSpellId")
.HasColumnType("integer")
.HasColumnName("advanced_apocryphal_spell_id")
.HasColumnOrder(5)
.HasComment("Продвинутое апокрифическое заклинание домена");
b.Property<int>("AdvancedDomainSpellId")
.HasColumnType("integer")
.HasColumnName("advanced_domain_spell_id")
.HasColumnOrder(3)
.HasComment("Продвинутое заклинание домена");
b.Property<int?>("ApocryphalSpellId")
.HasColumnType("integer")
.HasColumnName("apocryphal_spell_id")
.HasColumnOrder(4)
.HasComment("Апокрифическое заклинание домена");
b.Property<int>("DomainSpellId")
.HasColumnType("integer")
.HasColumnName("domain_spell_id")
.HasColumnOrder(2)
.HasComment("Заклинание домена");
b.HasKey("Id")
.HasName("pk_domains");
b.HasIndex("AdvancedApocryphalSpellId")
.HasDatabaseName("ix_domains_advanced_apocryphal_spell_id");
b.HasIndex("AdvancedDomainSpellId")
.HasDatabaseName("ix_domains_advanced_domain_spell_id");
b.HasIndex("ApocryphalSpellId")
.HasDatabaseName("ix_domains_apocryphal_spell_id");
b.HasIndex("DomainSpellId")
.HasDatabaseName("ix_domains_domain_spell_id");
b.ToTable("domains", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.Property<int>("Id")
@@ -2403,7 +2462,16 @@ namespace Pf2eModel.Migrations
.IsRequired()
.HasConstraintName("fk_deity_domains_deities_deity_id");
b.HasOne("Pf2eModel.Model.Structure.Domain", "Domain")
.WithMany("DeityDomains")
.HasForeignKey("DomainId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_deity_domains_domains_domain_id");
b.Navigation("Deity");
b.Navigation("Domain");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeitySpell", b =>
@@ -2439,6 +2507,52 @@ namespace Pf2eModel.Migrations
b.Navigation("Deity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.HasOne("Pf2eModel.Model.Structure.Spell", "AdvancedApocryphalSpell")
.WithMany()
.HasForeignKey("AdvancedApocryphalSpellId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_domains_spells_advanced_apocryphal_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "AdvancedDomainSpell")
.WithMany()
.HasForeignKey("AdvancedDomainSpellId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_spells_advanced_domain_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "ApocryphalSpell")
.WithMany()
.HasForeignKey("ApocryphalSpellId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_domains_spells_apocryphal_spell_id");
b.HasOne("Pf2eModel.Model.Structure.Spell", "DomainSpell")
.WithMany()
.HasForeignKey("DomainSpellId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_spells_domain_spell_id");
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
.WithOne()
.HasForeignKey("Pf2eModel.Model.Structure.Domain", "Id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_domains_entities_id");
b.Navigation("AdvancedApocryphalSpell");
b.Navigation("AdvancedDomainSpell");
b.Navigation("ApocryphalSpell");
b.Navigation("DomainSpell");
b.Navigation("Entity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
@@ -2729,6 +2843,11 @@ namespace Pf2eModel.Migrations
b.Navigation("DeityWeapons");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Domain", b =>
{
b.Navigation("DeityDomains");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
{
b.Navigation("FeatPrerequisites");
+6
View File
@@ -13,6 +13,12 @@ public enum TraitType
[PgName("regular")]
Regular,
/// <summary>
/// Мировоззрение.
/// </summary>
[PgName("alignment")]
Alignment,
/// <summary>
/// Признак класса.
/// </summary>
+8 -16
View File
@@ -23,40 +23,32 @@ public class Domain : IEntity
/// <inheritdoc/>
public Entity Entity { get; set; } = null!;
/// <summary>
/// Название домена.
/// </summary>
[Column(Order = 2)]
[MaxLength(Pf2eDbContext.NameLength)]
[Comment("Название домена")]
public string Name { get; set; } = null!;
/// <summary>
/// Идентификатор заклинания домена.
/// </summary>
[Column(Order = 3)]
[Comment("Идентификатор заклинания домена")]
[Column(Order = 2)]
[Comment("Заклинание домена")]
public int DomainSpellId { get; set; }
/// <summary>
/// Идентификатор продвинутого заклинания домена.
/// </summary>
[Column(Order = 4)]
[Comment("Идентификатор продвинутого заклинания домена")]
[Column(Order = 3)]
[Comment("Продвинутое заклинание домена")]
public int AdvancedDomainSpellId { get; set; }
/// <summary>
/// Идентификатор апокрифического заклинания домена.
/// </summary>
[Column(Order = 5)]
[Comment("Идентификатор апокрифического заклинания домена")]
[Column(Order = 4)]
[Comment("Апокрифическое заклинание домена")]
public int? ApocryphalSpellId { get; set; }
/// <summary>
/// Идентификатор продвинутого апокрифического заклинания домена.
/// </summary>
[Column(Order = 6)]
[Comment("Идентификатор продвинутого апокрифического заклинания домена")]
[Column(Order = 5)]
[Comment("Продвинутое апокрифическое заклинание домена")]
public int? AdvancedApocryphalSpellId { get; set; }
/// <summary>