我正在尝试创建一个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
会发生这种情况?
有没有办法阻止它?