私はドメイン モデルを作成中で、「Id」プロパティ (およびその他の監査追跡機能) を持つ「BaseEntity」クラスを作成したいと考えています。Id プロパティは主キーであり、ドメイン モデルの各エンティティは BaseEntity クラスから継承されます。かなり簡単なもの.....
public class BaseEntity
{
[Key]
public int Id { get; set; }
public DateTime LastUpdate { get; set; }
public string LastUpdateBy { get; set; }
}
public class Location : BaseEntity
{
[Required]
public string Name { get; set; }
public string Description { get; set; }
}
上記の例を使用して、「Id」フィールドを「LocationId」列にマップしたいと思います。次のようにして、各エンティティに対して明示的にこれを行うために modelBuilder を使用できることを理解しています。
modelBuilder.Entity<Location>().Property(s => s.Id).HasColumnName("LocationId");
しかし、ドメイン モデル内のすべてのエンティティに対してこれを実行したいのですが、それは見苦しくなります。
次のちょっとした反省を試みましたが、運がありませんでした。何らかの理由で、コンパイラは「シンボル タイプを解決できません」:
foreach (var type in GetTypesInNamespace(Assembly.Load("Domain.Model"),"Domain.Model"))
{
modelBuilder.Entity<type>().Property(x=>x.Id).....
}
データベースの「Id」プロパティを「ClassNameId」プロパティにマップするために、デフォルトの PrimaryKey 規則をオーバーライドする規則を定義する方法はありますか? Entity Framework 6 を使用しています。