@Shimmy В случае, если вы не используете стратегию наследования EF / базы данных, да, потому что это будут отдельные отношения.

я есть базовая модель:

public abstract class Status
{
     public string updateUserName { get; set; }
}

Затем модель, которая расширяет базовую модель, определенную выше:

public class Item : Status
{
     public int Id { get; set; }
     public string Description { get; set; }
}

Затем я определил классы конфигурации для каждого:

public class ItemConfiguration : IEntityTypeConfiguration<Item>
{
    public void Configure(EntityTypeBuilder<Item> builder)
    {
        builder.ToTable("Item", "dbo").HasKey(c => c.Id);
        builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
    }
}

public class StatusConfiguration : IEntityTypeConfiguration<Status>
{
    public void Configure(EntityTypeBuilder<Status> builder)
    {
        builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
    }

Теперь у меня есть следующий класс Context:

public class TestDbContext : DbContext
{
    public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
    {
    }

    public DbSet<Item> Item { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration(new ItemConfiguration());
    }
}

Я пытаюсь выяснить, как применить конфигурации модели состояния, определенные в классе StatusConfiguration, ко всем моделям, которые распространяются на него (только одна в этом примере: Item). Я хотел бы избегать определения одной и той же конфигурации модели состояния каждый раз, когда она используется. Модель состояния, по сути, будет метаданными, связанными с каждой записью элемента (то есть одной таблицей элементов в базе данных, содержащей все свойства, определенные в обеих моделях; не более и не менее).

Например, моей текущей реализацией является следующий класс ItemConfiguration без использования класса StatusConfiguration:

public class ItemConfiguration : IEntityTypeConfiguration<Item>
{
    public void Configure(EntityTypeBuilder<Item> builder)
    {
        builder.ToTable("Item", "dbo").HasKey(c => c.Id);
        builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
        builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
    }
}

Эта текущая реализация работает правильно и переносится в базу данных, как задумано. Я просто ищу более управляемый путь в будущем.

Я предполагаю, что я мог бы расширить класс ItemConfiguration, чтобы включить класс StatusConfiguration, но не могу найти пример этого метода в сети. Я надеюсь, что кто-то с немного большим опытом мог бы указать мне правильное направление?

Дайте мне знать, будет ли полезна дополнительная информация.

Ответы на вопрос(1)

Ваш ответ на вопрос