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中。
答案 0 :(得分:2)
知道这是一个非常老的问题,我不再使用EF5,但我正在编写我选择作为参考的解决方案。
在单独的“ DbContext”之间建立关系是不正确的,因此我们需要另一个模仿Country类的只读类,例如,名称可以是CountryView,并且您可以将该类映射到GeographicDbContext上的同一表,或者是只读在您的数据库中查看。因此,您不能从其他DbContext编辑该类,但该类的所有者是DbContext。您只能查看只读值。