Я пытаюсь создать API, и у меня возникают проблемы с отношениями «один к одному» в EF Core 2.0.
Один Person
должен иметь Один Car
, а Один Car
должен иметь Один Person
.
У меня есть две конечные точки /Person
и /Car
.
Когда я выполняю запрос на получение /Person
, я получаю список всех людей, и у этих людей есть одна машина, но в машине также есть данные о персоне. Э.Г.
[{
"id": 1
"firstName": "name",
"carId": 2
"car" : {
"id": 2,
"make": "Ford",
"person" : {
"id": 1
"firstName": "name",
"carId": 2
}
}
}]
Когда я выполняю запрос на получение /Car
, я получаю список машин, и у этих машин есть человек. Э.Г.
[{
"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
?
и есть ли способ, которым я могу предотвратить это?