我想知道(我讨厌使用“最佳实践”这个词)——但这是一种处理配置的好方法,因为它封装了 AAA 的配置?
我看到很多示例,其中OnModelCreating
包含大量用于创建数据库的指令列表,而长方法告诉我某些事情并不安静。
public class MyContext : DbContext
{
public MyContext() : base("name=MyDb") { }
public DbSet<AAA> AAAs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Configurations.Add(new AAA.Configuration());
}
}
并且有一个位置的类它的配置
public class AAA
{
[Key]
public int Id { get; set; }
[Required]
public string Details { get; set; }
internal class Configuration : EntityTypeConfiguration<AAA>
{
public Configuration()
{
// Set all the funky stuff here
}
}
}
我知道可能没有一种正确的方法。在我投入大量时间和眼泪之前,我正在寻找一个原因,为什么这绝对是世界上最糟糕的想法,或者是否有办法做类似的事情?
编辑
一位同事建议将此作为使用静态属性的替代方法
public class AAA
{
[Key]
public int Id { get; set; }
[Required]
public string Details { get; set; }
public static EntityTypeConfiguration<AAA> Configuration
{
get { return new AAAConfiguration(); }
}
}
internal class AAAConfiguration : EntityTypeConfiguration<AAA>
{
public AAAConfiguration()
{
// Set all the funky stuff here
}
}
我喜欢这个,因为它在配置实例化方面给了我更多的灵活性。