поиск в детской модели с использованием ЛЮБОГО в EF такой медленный - PullRequest
0 голосов
/ 04 октября 2019
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int TeacherId { get; set; }

public virtual Teacher Teacher { get; set; }
}

public class Nim
{
public int Id{ get; set; }
public int NIM { get; set; }
public bool Valid { get; set; }
}

public class Teacher
{
public int Id { get; set; }
public string Name { get; set; }

public int NimId { get; set; } //this is fk
public virtual ICollection<Student> Students { get; set; }
}

Я хочу получить список NIM на Учителя, найдя с именем учителя, вот мой первый код, я могу сделать это, используя этот код, и производительность хорошая и быстрая

string keyword = "John";
using (TestingEntities1 db = new TestingEntities1())
{
var models = db.Teachers.Where(a => a.Name.Equals(keyword)).
GroupBy(x => x.NimId).Select(i => new { i.FirstOrDefault().NimId });
}

Затем я добавляю функцию, которая также позволяет получить список NIM от дочернего имени, которое называется Student. Я пытался использовать ключевое слово «Any», но производительность очень медленно загружает результат (у меня много данных в моей базе данных)

ниже мой код, я использовал "Любой"

string keyword = "John";
using (TestingEntities1 db = new TestingEntities1())
{
var models = db.Teachers.Where(a => a.Name.Equals(keyword) || a.Students.Any(x=>x.Name.Equals(keyword))).
GroupBy(x => x.NimId).Select(i => new { i.FirstOrDefault().NimId });

}

Можете ли вы дать мне правильный способ сделать это, а также хороший результат скорости загрузки с моим делом?

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