static void Main(string[] args) { var context = new PhoneStoreEntities(); Console.WriteLine("Формирование запроса с проекцией"); // формирование запроса var query = from c in context.Users select new { c.Login, c.Password, c.Email }; Console.WriteLine(query); foreach (var user in query) Console.WriteLine("{0} {1}", user.Login, user.Email); Console.ReadLine(); Console.Clear(); Console.WriteLine("Формирование вложенненного запроса"); var query2 = from user in context.Users orderby user.Login select user; Console.WriteLine(query2); Console.WriteLine(); var nestedQuery = from a in query2 where a.Password.Length < 5 select a; Console.WriteLine(nestedQuery); foreach (var user in nestedQuery) Console.WriteLine(user.Password); Console.ReadKey(); }
static void Main(string[] args) { var context = new PhoneStoreEntities(); Console.WriteLine("Формирование запроса"); var query = from c in context.Users select c; Console.WriteLine("Выполнение запроса Linq2Entities"); Console.WriteLine(query); foreach (var user in query) // выполнение запроса к базе Console.WriteLine(user.Login); Console.ReadLine(); Console.Clear(); Console.WriteLine("Выполнение запроса Linq2Entities"); int userCount = query.Count(); // выполнение запроса к базе Console.WriteLine("Total number of records:{0}", userCount); Console.WriteLine("Формирование запроса и получение данных"); IQueryable<Users> query2 = from c in context.Users select c; Console.WriteLine(query2); IEnumerable<Users> Users = query.ToList(); // выполнение запроса // далее работаем с локальными данными (запросов к безе нет ) foreach (var User in Users) // обращения к базе нет Console.WriteLine(User.Login); int userCount2 = Users.Count(); Console.WriteLine("Total number of records:{0}", userCount2); // обращения к базе нет Console.ReadKey(); // Смотрим в профайлер! }
// Просмотр режимов работы запросов в SQL Profiler // Настройка SQL Profiler: // - подключение к серверку (localdb)\v11.0 // Свойства трассировки -> Выбор событий: // - убрать признаки в след разделах: // * Audit Login // * Audit Logout // * Existing Connection // * SQL Batch Starting public static void Main() { var db = new PhoneStoreEntities(); Console.WriteLine("Простой запрос"); //Формирование запроса на получение списка пользователей IQueryable<Users> query = from c in db.Users select c; // Вывод содержимого запроса Console.WriteLine(query); foreach (var item in query) Console.WriteLine(item.Login); Console.ReadLine(); Console.Clear(); Console.WriteLine("Запрос на выборку"); var query2 = from c in db.Users let fullName = c.Login + " " + c.Password orderby fullName where c.Password.Length>3 select fullName; // Вывод содержимого запроса Console.WriteLine(query2); foreach (var item in query2) Console.WriteLine(item); Console.ReadLine(); Console.Clear(); Console.WriteLine("Запрос на группировку"); var query3 = from c in db.UsersInfo group c by c.Code into gr select new { Key = gr.Key, Count = gr.Count(), Group = gr }; Console.WriteLine(query3); foreach (var group in query3) { if (group.Key != null) { Console.Write("Code = {0} ,", group.Key); Console.WriteLine("Count = {0}", group.Count); } } Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("Формирование запроса в режиме ЛЕНИВОЙ загрузки"); var context = new PhoneStoreEntities(); // Code-First поумолчанию: true, // DB/ModelFirst - смотреть свойства файла EDMX context.Configuration.LazyLoadingEnabled = true; var query = from user in context.Users select user; Console.WriteLine(query); var usersList = query.ToList(); foreach (var user in usersList) { // На каждой итерации обращение к БД!!!! if (user.UsersInfo != null ) Console.WriteLine(user.UsersInfo.FirstName); } Console.ReadLine(); Console.Clear(); Console.WriteLine("Формирование запроса в режиме ЯВНОЙ загрузки"); context.Configuration.LazyLoadingEnabled = false; var query2 = from uset in context.Users.Include("UsersInfo") select uset; Console.WriteLine(query2); var usersList2 = query2.ToList(); foreach (var user in usersList2) { //Нет запросов к БД!!! Console.WriteLine(user.UsersInfo.LastName); } Console.ReadLine(); Console.Clear(); Console.WriteLine("Формирование запроса в режиме СТРОГОЙ загрузки"); context.Configuration.LazyLoadingEnabled = false; var query3 = from user in context.Users select user; Console.WriteLine(query3); var userList3 = query3.ToList(); foreach (var user in userList3) { //Нет запросов к БД!!! Console.WriteLine(user.UsersInfo.LastName); } Console.ReadLine(); }