有人能告诉我如何在第9行获得当前的数据库提供程序吗?因此,它可以为MySQL迁移正确地生成迁移。我该怎么做才能做到干净。
1 internal class GroupConfiguration : IEntityTypeConfiguration<Group>
2 {
3 public void Configure(EntityTypeBuilder<Group> builder)
4 {
5 builder.ToTable(nameof(Group));
6 builder.HasKey("Id");
7 builder.Property(u => u.Id)
8 .ValueGeneratedOnAdd()
9 .HasDefaultValueSql((database.IsMySql()) ? "uuid()" : "newsequentialid()");
...我正在使用.NET Core3.1,我的webapp支持多个数据库提供者。目前,MySQL (Pomelo)和Server。我需要它以正确的方式生成迁移。因此,我有一个MySQL和Server迁移。
但是我不想手动更新MySQL生成的迁移。
发布于 2022-01-27 15:08:25
诀窍是将DatabaseFacade传递给您的配置类:
internal class GroupConfiguration : IEntityTypeConfiguration<Group>
{
private readonly DatabaseFacade _database;
public GroupConfiguration(DatabaseFacade database)
{
_database = database;
}
public void Configure(EntityTypeBuilder<Group> builder)
{
builder.ToTable(nameof(Group));
builder.HasKey("Id");
builder.Property(u => u.Id)
.ValueGeneratedOnAdd()
.HasDefaultValueSql((_database.IsMySql()) ? "uuid()" : newsequentialid()");
...,然后在Database中传递OnModelCreating属性。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// ...
modelBuilder.ApplyConfiguration(new GroupConfiguration(Database));
// ...
}请记住,配置类不能再由modelBuilder.ApplyConfigurationsFromAssembly()创建,因此您必须使用modelBuilder.ApplyConfiguration()添加配置。
https://stackoverflow.com/questions/65116594
复制相似问题