私は疑問に思っていました(そして「ベストプラクティス」という言葉を使うのは嫌いです)-しかし、これは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
}
}
}
おそらく正しい方法は1つではないと思います。多くの時間と涙を流す前に、これが世界で絶対に最悪のアイデアである可能性がある理由、または同様のことを行う方法があるかどうかを探しています。
編集
同僚は、静的プロパティを使用する代替方法としてこれを提案しました
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
}
}
構成のインスタンス化方法にもう少し柔軟性があるので、これが好きです。