EF核心加载一对一实体循环依赖

时间:2018-04-28 22:02:59

标签: c# ef-code-first entity-framework-core

我正在尝试创建一个API,而且我在EF Core 2.0中遇到一对一关系有困难。 一个Person必须拥有一个Car,而一个Car必须拥有一个Person。 我有两个端点/Person/Car

当我向/Person执行获取请求时,我会获得所有人的列表,并且这些人拥有一辆汽车,但汽车也有人员的详细信息。 E.g。

[{
    "id": 1
    "firstName": "name",
    "carId": 2
    "car" : {
        "id": 2,
        "make": "Ford",
        "person" : {
            "id": 1
            "firstName": "name",
            "carId": 2
        }
    }
}]

当我向/Car执行获取请求时,我会得到一个汽车列表,而这些汽车有一个人。 E.g。

[{
    "id": 2,
    "make": "Ford",
    "person":{
        "id": 1
        "firstName": "name",
        "carId": 2
     }
}]

这是我的DbContext

中的模型构建器
modelBuilder.Entity<Car>()
    .HasKey(t => new { t.Id });

modelBuilder.Entity<Person>()
    .HasKey(t => new { t.Id });

modelBuilder.Entity<Person>()
    .HasOne(t => t.Car)
    .WithOne(m => m.Person)
    .HasForeignKey<Car>(f => f.PersonId);

modelBuilder.Entity<Person>().ToTable("Person");

modelBuilder.Entity<Car>().ToTable("Car");

以下是我用来获取每个实体的方法

return this.People
    .Include(m => m.Car)
    .ToList();

return this.Car
    .Include(m => m.Person)
    .ToList();

这是我的Person类:

public class Person
{                           
     [Required]
     public Guid id { get; set; }

     [Required]
     public string FirstName { get; set; }

     public Car Car { get; set; }
}

这是我的汽车类:

public class Car
{                           
     [Required]
     public Guid id { get; set; }

     [Required]
     public string Make { get; set; }

     public Person Person { get; set; }
}

所以我的问题是:为什么/Person/Car会发生这种情况? 有没有办法阻止它?

0 个答案:

没有答案