当EF的关系得到验证?

时间:2018-03-08 20:13:23

标签: c# .net entity-framework entity-framework-6

我在理解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表之间的关系有异常?

0 个答案:

没有答案