Asp.net core 如何使用列模型重写OnModelCreating(ModelBuilder ModelBuilder)方法?

Asp.net core 如何使用列模型重写OnModelCreating(ModelBuilder ModelBuilder)方法?,asp.net-core,ef-core-2.0,Asp.net Core,Ef Core 2.0,我有column、columnA和columnB模型。我正在尝试重写ModelCreatingModelBuilder modelBuilder方法上受保护的override void,并尝试实现支持字段 public class Column<TKey> : AuditableModel<TKey> where TKey: IComparable { public string Name { get; set; } [Required]

我有column、columnA和columnB模型。我正在尝试重写ModelCreatingModelBuilder modelBuilder方法上受保护的override void,并尝试实现支持字段

public class Column<TKey> : AuditableModel<TKey>
    where TKey: IComparable
{
    public string Name { get; set; }
    [Required]
    public Settings Settings {get;,set;} = new Settings();
}

public class ColumnA : Column<Guid>
{
    public Guid Id { get; set; }
}
public class ColumnB : Column<Guid>
{
    public Guid Id { get; set; }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
    { 
        modelBuilder.Entity<ColumnA>()
            .Property(x => x.Settings)

        modelBuilder.Entity<ColumnB>()
            .Property(x => x.Settings)
}


如何使用列类型作为备份字段,而不是在modelCreating方法中对ColumnA和columnB分别执行此操作?

以下是我在EF项目中执行此操作的方法。这是一个简单的汽车模型示例,根据您的需要进行调整

public class Car {
    public int Id { get; set; }
    public string Name { get; set; }
}

internal sealed class CarConfiguration :
    IEntityTypeConfiguration<Car> {
    public void Configure(
        EntityTypeBuilder<Car> builder) {
        builder.ToTable("Cars").HasKey(
            t => t.Id);

        builder.Property(
            p => p.Name).HasMaxLength(255).IsRequired();
    }
}

public class MyContext :
    DbContext {
    protected override void OnModelCreating(
        ModelBuilder modelBuilder) {
        var assembly = typeof(MyContext).Assembly;

        modelBuilder.ApplyConfigurationsFromAssembly(assembly);
    }
}

您可以阅读。

也许可以查看IEntityTypeConfiguration类,然后在OnModelCreating中注册它们。。。使用modelBuilder.ApplyConfigurationsFromAssemblyassembly@Gup3rSuR4c您能给我一个如何实现这一点的例子吗?很高兴它有帮助。在2.0+中,当他们返回IEntityTypeConfiguration配置时,这要容易得多。在那之前,你必须按照你现在的方式来做,这会很快变得复杂起来,这取决于模型的大小和数量。他们现在让事情变得容易多了。