Entity Framework: свойство навигации из сервиса

#c# #.net #sql-server #asp.net-mvc #entity-framework

#c# #.net #sql-сервер #asp.net-mvc #entity-framework

Вопрос:

Несколько таблиц моей базы данных были перемещены за пределы моей базы данных, их данные теперь доступны мне через вызов API. Итак, в Student классе ниже Subject таблица была удалена, у меня все еще есть SubjectId таблица, с помощью которой я должен запрашивать API и получать данные объекта.

 public class Student
{ 
    public Subject Subject { get; set; }
}
  

Могу ли я что-нибудь сделать с EntityFramework, с помощью которого мне не придется изменять свой код, а доступ к свойству навигации student.Subject запросил бы данные у моего API и вернул бы их обратно мне?

Комментарии:

1. если вы создадите экземпляр, к которому сможете получить доступ. Ваш вопрос неясен……..

2. Когда мы пишем student.Subject, он извлекает данные из базы данных в EF, я хочу, чтобы вместо этого он извлекал данные из service API

3. если у вас есть доступ к api, вы можете установить EF и написать запрос через него

4. Данные для Student будут поступать из нашей собственной базы данных с использованием Entity Framework, но предметная часть поступает из API

Ответ №1:

Ну, проще всего пометить свойство Subject как [NotMapped], чтобы EF не пытался выполнить поиск по таблице DB

А затем напишите свое свойство get для запроса API. Это будет охватывать ту функциональность, которую вы хотите.

     public class Student
    {
        [NotMapped]
        public Subject Subject { get {
            return QueryAPIHere(this.SubjectId);
        } set; }
    }
  

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

     [NotMapped]
    private Subject _subject
    public Subject Subject
    {
        get
        {
            if (this._subject == null)
                this._subject = QueryAPI(this.SubjectId);
            return this._subject;
        }
        set;
    }
  

Комментарии:

1. Спасибо, Анестис, я попробую это