Это мой первый пост :) Я новичок в MVC .NET. И у вас есть некоторые вопросы в отношении функциональности и производительности Entity Framework. Вопросы рядный ...Entity Framework, DbSet <T>, Dispose() вопросы производительности
class StudentContext : DbContext
{
public StudentContext() : base("myconnectionstring") {};
public DbSet<Student> Students {get; set; }
...
}
Вопрос: прочитать ли DbSet все записи из Студенческой таблицы базы данных, и хранить его в студентах сбора (т.е. в памяти)? Или он просто поддерживает соединение с этой таблицей, а записи (записи) выполняются во время выполнения SQL в базе данных?
Для следующих:
private StudentContext db = new StudentContext();
Student astudent = db.Students.Find(id);
или
var astudent = from s in db.Students
where s.StudentID == id)
select s;
Вопрос: Какой из них лучше для производительности? Я не уверен, как метод Find работает под капотом для коллекции?
Вопрос: Когда соединение с базой данных закрыто? Во время вызова метода Dispose()? Если это так, следует ли вызвать метод Dispose() для класса с экземпляром контекста базы данных? Я читал здесь, чтобы использовать Использование блоков.
Я предполагаю, что для класса Control get get создан, работает, включая доступ к базе данных, вызывает связанный с ним вид, а затем (контроллер) выходит из области действия и выгружается из памяти. Или сборщик гарбаз. Но лучше всего вызывать Dispose(), чтобы выполнить очистку явно.
Исправить меня, если я ошибаюсь, но 'DbSet' означает, что вы используете Entity Framework, а не LINQ to SQL, не так ли? –
MarcinJuraszek
Да, используя EF. Извините, новичок в этих условиях. Я должен был сказать EF и LINQ заявления. –
ОК, я отредактировал ваш вопрос, чтобы соответствовать этому. – MarcinJuraszek