Есть ли способ немедленно заполнить свойство объекта из связанного поля идентификатора при создании экземпляра объекта из БД? - PullRequest
1 голос
/ 25 апреля 2020

Скажем, у меня есть две таблицы в моей базе данных SQLite, Person и Student .

Person имеет столбцы Id и Имя . Студент имеет столбец Id и PersonId . PersonId , очевидно, ссылается на столбец ID в таблице Person.

Итак, в моем приложении у меня есть класс для каждой из этих таблиц, Person и Ученик .

Ученический класс будет иметь свойства:

public class Student
{
Int Id { get; set; };  
Int PersonId { get; set; };  
Person person { get; set; };  
}

А затем у меня будет соединение SQLite для извлечения данных из БД:

SQLiteConnection con = new SQLiteConnection(DBLocation);
var students = con.Table<Student>().ToList();

Это заполнит свойства «Int Id» и «Int PersonId» для каждого объекта, но не свойство «Person person».

У меня вопрос, есть ли способ назначить это свойство (Person person) его соответствующее значение (объект Person, Id == Student.PersonId) одновременно? Или что было бы лучшим способом для этого?

Спасибо

1 Ответ

1 голос
/ 25 апреля 2020

Если вы используете ORM, как EntityFrameworkCore, вы можете достичь этого. Класс ученика:

public class Student
{
Int Id { get; set; };  
Int PersonId { get; set; };  
Person person { get; set; };  
}

Класс персонажа:

public class Person
{
Int Id { get; set; };
Student Student { get; set; };  
}

Затем, используя его:

var person = new Person
{
  Id = 1,
  Student = new Student
  {
    Id = 1
  }
}

dbContext.Persons.Add(person);
dbContext.SaveChanges();

Необходимо выполнить некоторые настройки, прежде чем использовать код, например, создание дочернего класса DbContext, который представляет базу данных в памяти et c. Вы можете узнать EF Core здесь: https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...