#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. Спасибо, Анестис, я попробую это