我在理解Entity Framework中的关系时遇到了问题。最简单的方法是解释我对这个例子的困惑。我有3个表,其中2个连接1:1和第三个表完全没有连接到任何其他表 - 但是在同一个数据库中:
[Table("team")]
public class Team
{
[Key]
[Column("id", TypeName = "int")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("name", TypeName = "varchar")]
public string Name { get; set; }
public TeamAddress TeamAddress { get; set; }
}
[Table("teamAddress")]
public class TeamAddress
{
[Key]
[Column("id", TypeName = "int")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("street", TypeName = "varchar")]
public string Street { get; set; }
public Team Team { get; set; }
}
[Table("foo")]
public class Foo
{
[Key]
[Column("id", TypeName = "int")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("fooName", TypeName = "varchar")]
public string FooName { get; set; }
}
FluentAPI:
modelBuilder.Entity<Team>().HasOptional(p => p.TeamAddress).WithRequired(p => p.Team);
一切都很好,但当我删除(或中断)fluentAPI时,我在查询Foo
表时遇到异常。是否意味着无论我在做什么,都会验证一个DbContext中的所有表?
当我休息FluentAPI
并尝试这样做时:
var foo = fni.Foos.AsNoTracking().ToList();
即使Foo未连接到任何表格,我也会遇到此异常:
其他信息:无法确定主要结尾
之间的关联
问题是:为什么我在查询不相关的Foo表时会对Team和TeamAddress表之间的关系有异常?