private void AddNewKey(Users user, string generateKey, BaseContext cntx) { DataModel.Keys key = new DataModel.Keys() { Key = generateKey, OwnerId = user.Id, User = new List <Users>() { user } }; var query = (from e in cntx.Users where e.Username == user.Username orderby e.Id ascending select e).FirstOrDefault(); cntx.Keys.Add(key); var queryKey = (from e in cntx.Keys where e.Key == key.Key orderby e.Id ascending select e).FirstOrDefault(); //query.Keys.Add(queryKey); DataModel.Keys[] arrk = new DataModel.Keys[query.Keys.Count]; query.Keys.CopyTo(arrk, 0); Console.WriteLine($"{query.Keys.Count} {arrk.Length} {arrk.ToArray()}"); cntx.SaveChanges(); //queryKey.User.Add(query); //cntx.SaveChanges(); Console.WriteLine($"Successfuly added key '{generateKey}' for user '{user.Username}'".DrawInConsoleBox()); }
public static void AddNewKey_method(BaseContext cntx) { Users user = cntx.Users.Where(x => x.Id == 3).FirstOrDefault(); DataModel.Keys key = new DataModel.Keys() { Key = RandomString(16), OwnerId = 3, User = new List <Users>() }; key.User.Add(user); cntx.Keys.Add(key); cntx.SaveChanges(); EagerLoading(cntx); }
//Отложенная загрузка (lazy loading) заключается в том, что Entity Framework автоматически загружает данные, //при этом не загружая связанные данные. Когда потребуются связанные данные Entity Framework создаст еще один запрос к базе данных. public static void LazyLoading(BaseContext cntx) { Dictionary <int, string> users = new Dictionary <int, string>(); foreach (Users cntxUser in cntx.Users) { users.Add(cntxUser.Id, cntxUser.Username); } string[] usernames = new string[users.Values.Count]; users.Values.CopyTo(usernames, 0); MenuChoice usersMenuChoice = MenuManager.Menu(usernames, "Choose user to load"); var user = (from e in cntx.Users where e.Username == usersMenuChoice.choice orderby e.Id ascending select e).FirstOrDefault(); // Попытаться загрузить связанные с ним ключи if (user != null && user.Keys != null) { for (int i = 0; i < user.Keys.Count; i++) { DataModel.Keys key = user.Keys.ElementAt(i); if (key != null) { Console.WriteLine($"Key: {key.Key}"); } } } Console.WriteLine(); Console.WriteLine($"All existing keys owned by '{user.Username}'".DrawInConsoleBox()); Console.ReadKey(true); // foreach (var key in user.Keys) // Console.WriteLine("Key: " + key.Key); }