Ejemplo n.º 1
0
        public void Start()
        {
            // https://www.miroslavholec.cz/blog/odstranovani-dat-v-entity-framework-bez-preloadu

            // direct delete (by ID)
            Book book1 = new Book { BookId = 46 };
            context.Entry(book1).State = EntityState.Deleted;
            context.SaveChanges();

            // direct update
            EBook book2 = new EBook {BookId = 42, Title = "Tipy a triky pro iPhone 6", Added = DateTime.Now, CategoryId = 1};
            context.Entry(book2).State = EntityState.Modified; // !!! neprovede se změna typu, EF bug
            context.SaveChanges();

            // asnotracking
            var all1 = context.Books.ToList();
            var all2 = context.Books.AsNoTracking().ToList();
            Book book3 = context.Books.OrderByDescending(x => x.BookId).FirstOrDefault();
            Book book4 = context.Books.AsNoTracking().OrderBy(x => x.BookId).FirstOrDefault();
            book3.Title = "Chci změnit titulek";
            book4.Title = "Chci změnit titulek";
            context.SaveChanges();

            // global tracking
            context.Configuration.AutoDetectChangesEnabled = false;
            Category category = context.Categories.FirstOrDefault();
            Book book = context.Books.FirstOrDefault();
            book.Category = category;
            context.SaveChanges();

            // detect changes
            context.ChangeTracker.DetectChanges();
            context.SaveChanges();
        }
        public void Start()
        {
            /*************************************** UPDATE */

            // načtení dat a následné uložení
            Book book = context.Books.Find(2);
            book.Title = "O pejskovi a kočičce";
            context.SaveChanges();

            // ignorováno
            book = new Book { BookId = 2 };
            book.Title = "Nový titulek";
            context.SaveChanges();

            // aktualizace na závislé property není problém
            var bookWithCategory = context.Books.Include(x => x.Category).FirstOrDefault(x => x.BookId == 2);
            bookWithCategory.Category.Name = "Psychologická kniha";
            context.SaveChanges();

            /*************************************** CREATE */

            // přidání záznamu
            book = new Book() {Added = DateTime.Now, CategoryId = 1, Title = "New book" };
            context.Books.Add(book);
            context.SaveChanges();

            // přidání záznamu s navázanou entitou
            Category category = new Category {Name = "Hudební knihy"};
            context.Books.Add(new EBook {Title = "Michael Jackson", Added = DateTime.Now, CategoryId = 1});
            context.Books.Add(new PrintedBook {Title = "Michael Jackson", Added = DateTime.Now, Category = category});
            context.SaveChanges();

            var allData = new EBook
            {
                Title = "Jezevčík",
                Added = DateTime.Now,
                Category = new Category { Name = "Zvířata" },
                ParameterValues = new List<ParameterValue>
                {
                    new ParameterValue { ParameterId = 1, Value = "135"},
                    new ParameterValue {ParameterId = 2, Value = "2015"}
                }
            };

            context.Books.Add(allData);
            context.SaveChanges();

            /*************************************** DELETE */

            // odstranění záznamu
            context.Books.Remove(allData);
            context.SaveChanges();

            // cascading delete disabled
            var parameters = allData.ParameterValues;
            context.ParameterValues.RemoveRange(parameters);
            context.Books.Remove(allData);
            context.SaveChanges();

            // https://www.miroslavholec.cz/blog/entity-framework-a-optimalizace-dotazu
        }