我有两个项目,Data
和Domain
。在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);
}