예제 #1
0
        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());
        }
예제 #2
0
        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);
        }
예제 #3
0
        //Отложенная загрузка (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);
        }