Це віртуальне ключове слово пов'язане з темою завантаження даних із фреймворку сутності (ледаче завантаження, прагнення завантаження та явне завантаження).
Ви повинні використовувати віртуальне ключове слово, коли ви хочете завантажити дані з ледачим завантаженням.
ледаче завантаження - це процес, при якому суб'єкт або колекція сутностей автоматично завантажується з бази даних при першому зверненні до нього.
Наприклад, при використанні визначеного нижче класу сутності блогу відповідні повідомлення будуть завантажуватися при першому доступі до властивості навігації Повідомлення:
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Tags { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
Ледаче завантаження колекції повідомлень можна відключити, зробивши властивість Posts невіртуальною.
якщо завантаження ледачих вимкнено, завантаження колекції повідомлень все ще можна досягти, використовуючи прагнення до завантаження (використовуючи метод Включити) або явно завантажуючи пов'язані сутності (використовуючи метод Load).
З нетерпінням завантажуємо:
using (var context = new BloggingContext())
{
// Load all blogs and related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}
Явно завантажується:
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
// Load the posts related to a given blog
context.Entry(blog).Collection(p => p.Posts).Load();
}