[英]Define default values using EF Core - OnModelCreating
我開始從 Asp.net MVC 遷移到 Asp.Net MVC Core,我意識到有些事情與我預期的有點不同。 我想知道如何像以前在 EF 6 中那樣設置一些屬性
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Properties<string>().Configure(p => p.HasColumnType("varchar"));
modelBuilder.Properties<string>().Configure(p => p.HasMaxLength(100));
modelBuilder.Properties().Where(x => x.Name == "Active").Configure(x => x.HasColumnType("char").HasMaxLength(1).IsRequired());
modelBuilder.Properties().Where(x => x.Name == "Excluded").Configure(x => x.HasColumnType("char").HasMaxLength(1).IsRequired());
modelBuilder.Properties().Where(x => x.Name == "RegisterDate").Configure(x => x.IsRequired());
modelBuilder.Properties().Where(x => x.Name == "ChangeDate").Configure(x => x.IsRequired());
...
}
使用 EF Core 似乎無法做到
protected override void OnModelCreating(ModelBuilder builder)
{
}
有誰知道我該怎么做?
它不起作用,因為您必須先為您的實體調用此行
var entityBuilder = modelBuilder.Entity<SomeEntity>();
然后執行以下操作:
entityBuilder.Property(someEntity => someEntity.SomeProperty)
.HasColumnType("char")
.HasMaxLength(10)
.IsRequired();
另請查看IEntityTypeConfiguration<>它將幫助您保持 DbContext 清潔。 在您的 DbContext OnModelCreating 方法中,您只需調用
modelBuilder.ApplyConfiguration(new SomeEntityConfiguration());
基於此,您還可以為公共屬性定義基類,並為公共屬性創建基 IEntityTypeConfiguration<>。 那里沒有太多魔力,但有些事情只是明確定義而不是隱含定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.