Asp.net core 如何使用列模型重写OnModelCreating(ModelBuilder ModelBuilder)方法?
我有column、columnA和columnB模型。我正在尝试重写ModelCreatingModelBuilder modelBuilder方法上受保护的override void,并尝试实现支持字段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]
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配置时,这要容易得多。在那之前,你必须按照你现在的方式来做,这会很快变得复杂起来,这取决于模型的大小和数量。他们现在让事情变得容易多了。