我有一个由两个单独的上下文组成的模型,所以我在两个单独的 DbContext 中实现,我有第三个 DbContext,它是这两个 DbContextes 的基础,我有一个 Base 类,它的类来自 GeographicDbContext 和 PublishingDbContext 从该类继承。并且 PublishingDbContext 中的 Publisher 类和 GeographicDbContext 中的 Country 之间存在关系。现在我想告诉 EntityFramework 我有一个基本抽象类,它的 ID 应该映射到子类中的每个表。我知道我必须将此代码放在 DbContext 的 OnModelCreating 事件中
modelBuilder.Entity<Country>().Map(x =>
{
x.MapInheritedProperties();
x.ToTable("Country");
});
由于 Country 是 GeographicDbContext 中的一个类,我想将此代码放在该 DbContext 中,但是当使用 Publisher 类及其导航属性 Country 时,我必须将这段代码也添加到 PublishingDbContext 中,因为 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 中。