Сущность домена
This commit is contained in:
@@ -79,6 +79,12 @@ public enum EntityType
|
|||||||
[PgName("condition")]
|
[PgName("condition")]
|
||||||
Condition,
|
Condition,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Домен божества.
|
||||||
|
/// </summary>
|
||||||
|
[PgName("domain")]
|
||||||
|
Domain,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Божество.
|
/// Божество.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Pf2eModel.Model.Structure;
|
||||||
|
|
||||||
namespace Pf2eModel.Model.Structure.DeityRelation;
|
namespace Pf2eModel.Model.Structure.DeityRelation;
|
||||||
|
|
||||||
@@ -25,6 +26,13 @@ public class DeityDomain
|
|||||||
[Comment("Идентификатор божества")]
|
[Comment("Идентификатор божества")]
|
||||||
public int DeityId { get; set; }
|
public int DeityId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор домена.
|
||||||
|
/// </summary>
|
||||||
|
[Column(Order = 4)]
|
||||||
|
[Comment("Идентификатор домена")]
|
||||||
|
public int DomainId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Флаг, указывающий, является ли домен основным для божества.
|
/// Флаг, указывающий, является ли домен основным для божества.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -35,7 +43,7 @@ public class DeityDomain
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Значение домена божества, например, "Свет", "Тьма" и т.д.
|
/// Значение домена божества, например, "Свет", "Тьма" и т.д.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Column(Order = 4)]
|
[Column(Order = 5)]
|
||||||
[MaxLength(Pf2eDbContext.NameLength)]
|
[MaxLength(Pf2eDbContext.NameLength)]
|
||||||
public string Value { get; set; } = null!;
|
public string Value { get; set; } = null!;
|
||||||
|
|
||||||
@@ -43,4 +51,9 @@ public class DeityDomain
|
|||||||
/// Божество, к которому относится домен.
|
/// Божество, к которому относится домен.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual Deity Deity { get; set; } = null!;
|
public virtual Deity Deity { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Домен, связанный с божеством.
|
||||||
|
/// </summary>
|
||||||
|
public virtual Domain Domain { get; set; } = null!;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Pf2eModel.Model.Base;
|
||||||
|
using Pf2eModel.Model.Enum;
|
||||||
|
using Pf2eModel.Model.Structure.DeityRelation;
|
||||||
|
|
||||||
|
namespace Pf2eModel.Model.Structure;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Домен.
|
||||||
|
/// </summary>
|
||||||
|
[EntityOfType(EntityType.Domain)]
|
||||||
|
public class Domain : IEntity
|
||||||
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||||
|
[Column(Order = 1)]
|
||||||
|
[Comment("Идентификатор")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <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("Идентификатор заклинания домена")]
|
||||||
|
public int DomainSpellId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор продвинутого заклинания домена.
|
||||||
|
/// </summary>
|
||||||
|
[Column(Order = 4)]
|
||||||
|
[Comment("Идентификатор продвинутого заклинания домена")]
|
||||||
|
public int AdvancedDomainSpellId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор апокрифического заклинания домена.
|
||||||
|
/// </summary>
|
||||||
|
[Column(Order = 5)]
|
||||||
|
[Comment("Идентификатор апокрифического заклинания домена")]
|
||||||
|
public int? ApocryphalSpellId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Идентификатор продвинутого апокрифического заклинания домена.
|
||||||
|
/// </summary>
|
||||||
|
[Column(Order = 6)]
|
||||||
|
[Comment("Идентификатор продвинутого апокрифического заклинания домена")]
|
||||||
|
public int? AdvancedApocryphalSpellId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Заклинание домена.
|
||||||
|
/// </summary>
|
||||||
|
public virtual Spell DomainSpell { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Продвинутое заклинание домена.
|
||||||
|
/// </summary>
|
||||||
|
public virtual Spell AdvancedDomainSpell { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Апокрифическое заклинание домена.
|
||||||
|
/// </summary>
|
||||||
|
public virtual Spell? ApocryphalSpell { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Продвинутое апокрифическое заклинание домена.
|
||||||
|
/// </summary>
|
||||||
|
public virtual Spell? AdvancedApocryphalSpell { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Связи с божествами, которые используют этот домен.
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<DeityDomain> DeityDomains { get; set; } = new List<DeityDomain>();
|
||||||
|
}
|
||||||
@@ -89,6 +89,8 @@ public partial class Pf2eDbContext : DbContext
|
|||||||
|
|
||||||
public virtual DbSet<DeityWeapon> DeityWeapons { get; set; }
|
public virtual DbSet<DeityWeapon> DeityWeapons { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Domain> Domains { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<Entity> Entities { get; set; }
|
public virtual DbSet<Entity> Entities { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<EntityAlias> EntityAliases { get; set; }
|
public virtual DbSet<EntityAlias> EntityAliases { get; set; }
|
||||||
|
|||||||
@@ -393,6 +393,42 @@ public partial class Pf2eDbContext
|
|||||||
BindEntity(entity);
|
BindEntity(entity);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Domain
|
||||||
|
modelBuilder.Entity<Domain>(entity =>
|
||||||
|
{
|
||||||
|
BindEntity(entity);
|
||||||
|
|
||||||
|
entity
|
||||||
|
.HasOne(d => d.DomainSpell)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey(d => d.DomainSpellId)
|
||||||
|
.OnDelete(DeleteBehavior.Cascade);
|
||||||
|
|
||||||
|
entity
|
||||||
|
.HasOne(d => d.AdvancedDomainSpell)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey(d => d.AdvancedDomainSpellId)
|
||||||
|
.OnDelete(DeleteBehavior.Cascade);
|
||||||
|
|
||||||
|
entity
|
||||||
|
.HasOne(d => d.ApocryphalSpell)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey(d => d.ApocryphalSpellId)
|
||||||
|
.OnDelete(DeleteBehavior.SetNull);
|
||||||
|
|
||||||
|
entity
|
||||||
|
.HasOne(d => d.AdvancedApocryphalSpell)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey(d => d.AdvancedApocryphalSpellId)
|
||||||
|
.OnDelete(DeleteBehavior.SetNull);
|
||||||
|
|
||||||
|
entity
|
||||||
|
.HasMany(d => d.DeityDomains)
|
||||||
|
.WithOne(dd => dd.Domain)
|
||||||
|
.HasForeignKey(dd => dd.DomainId)
|
||||||
|
.OnDelete(DeleteBehavior.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
// Deity
|
// Deity
|
||||||
modelBuilder.Entity<Deity>(entity =>
|
modelBuilder.Entity<Deity>(entity =>
|
||||||
{
|
{
|
||||||
@@ -425,7 +461,10 @@ public partial class Pf2eDbContext
|
|||||||
entity.HasMany(e => e.Skills).WithMany();
|
entity.HasMany(e => e.Skills).WithMany();
|
||||||
});
|
});
|
||||||
modelBuilder.Entity<DeityAttribute>(entity => { });
|
modelBuilder.Entity<DeityAttribute>(entity => { });
|
||||||
modelBuilder.Entity<DeityDomain>(entity => { });
|
modelBuilder.Entity<DeityDomain>(entity =>
|
||||||
|
{
|
||||||
|
// Связь теперь настроена в конфигурации Domain
|
||||||
|
});
|
||||||
modelBuilder.Entity<DeitySpell>(entity =>
|
modelBuilder.Entity<DeitySpell>(entity =>
|
||||||
{
|
{
|
||||||
entity
|
entity
|
||||||
|
|||||||
Reference in New Issue
Block a user