2 つの別個のコンテキストで構成されるモデルがあるため、2 つの別個の DbContext を実装し、これら 2 つの DbContext のベースである 3 つ目の DbContext を持ち、そのクラスから継承された GeographicDbContext と PublishingDbContext のクラスを持つ Base クラスを持っています。また、PublishingDbContext の Publisher クラスと GeographicDbContext の Country の間には関係があります。ここで、サブクラスの各テーブルにマップする必要がある ID を持つ基本抽象クラスがあることを EntityFramework に伝えたいと思います。このコードを DbContext の OnModelCreating イベントに配置する必要があることはわかっています
modelBuilder.Entity<Country>().Map(x =>
{
x.MapInheritedProperties();
x.ToTable("Country");
});
Country は GeographicDbContext のクラスであるため、このコードをその DbContext 内に配置したいのですが、Publisher クラスとそのナビゲーション プロパティ Country を使用する場合は、このコードを PublishingDbContext にも追加する必要があります。モデル。このコードを GeographicDbContext にのみ配置する方法はありますか? 特定の DbContext で到達可能なエンティティごとにこのコードを追加したくありません。
public abstract class BaseEntity
{
[Key]
public int ID { get; set; }
}
[Table("Country")]
public class Country : BaseEntity
{
public string Name { get; set; }
public int Code { get; set; }
}
public class Publisher: BaseEntity
{
public string Title { get; set; }
[Column("CountryID")]
public int? CountryID { get; set; }
[ForeignKey("CountryID")]
public Country Country { get; set; }
}
上記のコードでは、すべてのクラスが異なるアセンブリと異なる DbContext にあります。