@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, но не могу найти пример этого метода в сети. Я надеюсь, что кто-то с немного большим опытом мог бы указать мне правильное направление?
Дайте мне знать, будет ли полезна дополнительная информация.