当使用只有几个实体引用的Context类时,Entity Framework似乎为其恶意用途引入了许多其他实体引用,这对我来说是个问题。 (我得到的错误就像“实体这样,因此不能使用与实体相同的表,因为它们不在同一类型层次结构中或其他任何”。)我的问题是不关于这个特定的错误,但为什么实体框架在我的上下文之外引入实体。
我有一个Entity Framework DbContext子类,只有几个引用,如下所示:
public class FruitContext : DbContext
{
public DbSet<Apple> Apples { get; set; }
public DbSet<Orange> Oranges { get; set; }
}
我正在使用Linqpad来查询这个上下文,当我展开FruitContext节点时,它向我显示它按预期包含“苹果”和“橘子”,但它也向我显示“Beans”和“Asparagi”它们根本不在FruitContext中,并且不在Apple或Orange的类型层次结构中。为什么EF会吸引这些实体?现在可能是我在存储库或其他东西中引用这些Beans和Asparagi实体的情况,但EF会关心这个吗?有没有办法告诉EF一个特定的上下文,它应该只关心上下文中的实际内容,并排除它从其他地方抓取的任何实体?
编辑1 :这是Orange类:
[Table("FOOD")]
public class Orange
{
public Int32 Juiciness { get; set; }
}
这是因为某种原因而被拉入的芦笋类,但为什么呢?它与Orange共享同一个表,但为什么EF需要关注,因为它不在上下文中而且没有与Orange相同的类型层次结构嵌套?
[Table("FOOD")]
public class Asparagus
{
public String SomeVegetableField { get; set; }
}