Я использую подход EF Core DbFirst. Мой dbContext создается автоматически командой Scaffold-DbContext.
Мне нужно добавить дополнительные DbSets в dbContext и добавить в метод OnModelCreating dbContext некоторый дополнительный код, но после каждого леса этот добавленный код стирается, и мне приходится добавлять его каждый раз снова.
Я хочу создать еще один частичный класс dbContext и пометить защищенное переопределение void OnModelCreating (ModelBuilder modelBuilder) как частичный метод
но получите ошибки:
- Частичный метод не может иметь модификаторы доступа или виртуальные, абстрактные, переопределенные, новые, запечатанные или внешние модификаторы .
- Частичный метод не может иметь несколько реализующих объявлений
Вот псевдокод:
MyDbContext1.cs - генерируется Scaffold-DbContext
public partial class MyDbContext : DbContext
{
public MyDbContext()
{
}
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
public virtual DbSet<Client> Clients { get; set; }
protected override partial void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Client>(entity =>
{
// ... some code
}
}
}
MyDbContext2.cs - этот код, который я каждый раз добавлял в dbContext после скаффолдинга:
public partial class MyDbContext
{
public virtual DbSet<JustAnotherEntity> AnotherEntity { get; set; }
protected override partial void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<JustAnotherEntity>(entity =>
{
entity.HasKey(e => new {e.Id, e.IdAction, e.IdState})
.ForSqlServerIsClustered(false);
});
}
}