複合型プロパティの列名を制御したい
public class Hoge1
{
public int Id { get; set; }
public Hoge2 Hoge2 { get; set; }
}
[ComplexType]
public class Hoge2
{
public string Text { get; set; }
public Hoge3 Hoge3A { get; set; }
public Hoge3 Hoge3B { get; set; }
}
[ComplexType]
public class Hoge3
{
public string Value1 { get; set; }
public string Value2 { get; set; }
public string Value3 { get; set; }
・・・
public string Value99 { get; set; }
}
コードファーストでテーブルを作成すると以下のような列名で生成されます。
[Hoge2_Text]
[Hoge2_Hoge3A_Value1]
[Hoge2_Hoge3A_Value2]
[Hoge2_Hoge3A_Value3]
・・・
[Hoge2_Hoge3A_Value99]
[Hoge2_Hoge3B_Value1]
[Hoge2_Hoge3B_Value2]
[Hoge2_Hoge3B_Value3]
・・・
[Hoge2_Hoge3B_Value99]
これを
[Text]
[Hoge3A_Value1]
[Hoge3A_Value2]
[Hoge3A_Value3]
・・・
[Hoge3A_Value99]
[Hoge3B_Value1]
[Hoge3B_Value2]
[Hoge3B_Value3]
・・・
[Hoge3B_Value99]
のような列名にしたいです。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Hoge1>().Property(entity => entity.Hoge2.Text).HasColumnName("Text");
modelBuilder.Entity<Hoge1>().Property(entity => entity.Hoge2.Hoge3A.Value1).HasColumnName("Hoge3A_Value1");
modelBuilder.Entity<Hoge1>().Property(entity => entity.Hoge2.Hoge3A.Value2).HasColumnName("Hoge3A_Value2");
modelBuilder.Entity<Hoge1>().Property(entity => entity.Hoge2.Hoge3A.Value3).HasColumnName("Hoge3A_Value3");
・・・
modelBuilder.Entity<Hoge1>().Property(entity => entity.Hoge2.Hoge3B.Value99).HasColumnName("Hoge3B_Value99");
と書けば実現できるところまでは理解できましたが、もっとシンプルに記述する方法はあるでしょうか?
(クラス階層の中間にある Hoge2 を列名のプレフィクスから除外したい)