不同项目上的EF Core fluent api配置



我有两个项目,DataDomain。在Data中,我有Fluent API,我想将其内容移动到Domain。我该怎么做?如果我使用数据库优先的方法,有没有一种方法可以配置EF来实现这一点?

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>(entity =>
            {
                entity.ToTable("Student", "dbo");
                entity.Property(e => e.CreatedDate)
                      .HasColumnType("datetime");
                entity.Property(e => e.IsEnabled)
                      .IsRequired()
                      .HasDefaultValueSql("((1))");
                entity.Property(e => e.Name)
                      .HasMaxLength(250);
                entity.Property(e => e.UpdatedDate)
                      .HasColumnType("datetime");
        });
}

Student实体到Domain项目的配置移动到实现IEntityTypeConfiguration<T>的单独类中。

允许将实体类型的配置分解到一个单独的类中,而不是在OnModelCreating(ModelBuilder(中内联。

public class StudentConfiguration : IEntityTypeConfiguration<Student>
{
    public void Configure(EntityTypeBuilder<Student> builder)
    {
        builder
            .ToTable("Student", "dbo");
            
        builder.Property(e => e.CreatedDate).HasColumnType("datetime");
        
        // More rules go here.
    }
}

DbContext中,您可以从Domain项目加载配置,例如如下所示。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .ApplyConfigurationsFromAssembly(typeof(Student).Assembly);
    base.OnModelCreating(modelBuilder);
}

最新更新