Пример #1
0
        public void QueryNestedPropertyWithNoProxyAndIncludeOneLevel()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person
                {
                    Name        = "Hallo1",
                    ChildPerson = new Person
                    {
                        Name        = "Hallo2",
                        ChildPerson = new Person
                        {
                            Name = "Hallo3"
                        }
                    }
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();

                var p = ctx.Persons.Include(x => x.ChildPerson).FirstOrDefault();
                Assert.That(p.ChildPerson, Is.Not.Null);
            }
        }
Пример #2
0
        public void TestJoinOperation()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var person = new Person
                {
                    Name = "Eintrag"
                };

                foreach (var adr in Enumerable.Range(0, 10).Select(x => new Adresse {
                    Name = x.ToString()
                }))
                {
                    person.Addresses.Add(adr);
                }

                ctx.Persons.Add(person);
                ctx.SaveChanges();

                var query = from p in ctx.Persons
                            from a in ctx.Adresses
                            where p.Id == a.Id
                            select a;

                Assert.That(ctx.Persons.Count(), Is.EqualTo(1));
                Assert.That(ctx.Adresses.Count(), Is.EqualTo(10));
                Assert.That(query.Count(), Is.EqualTo(1));
            }
        }
Пример #3
0
        public void QueryNestedPropertyWithNoProxyAndInclude()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                p1.Addresses.Add(new Adresse()
                {
                    Name = "Myaddress"
                });
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();

                var p = ctx.Persons.Include(x => x.Addresses).FirstOrDefault();
                Assert.That(p.Addresses.Count, Is.EqualTo(1));
            }
        }
Пример #4
0
        public void QueryNoProxyEnsureId()
        {
            int id = 0;

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                p1.Addresses.Add(new Adresse()
                {
                    Name = "Myaddress"
                });
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
                id = p1.Addresses.FirstOrDefault().Id;
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();
                var p = ctx.Persons.Include(x => x.Addresses).FirstOrDefault();
                Assert.That(p.Addresses.FirstOrDefault().Id, Is.EqualTo(id));
            }
        }
Пример #5
0
        public void ChangePropertyAndSave()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                ctx.Persons.Add(new Person()
                {
                    Name = "Name"
                });
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p = ctx.Persons.FirstOrDefault();
                p.Name = p.Name.ToUpper();
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p = ctx.Persons.FirstOrDefault();
                Assert.That(p.Name, Is.EqualTo("NAME"));
            }
        }
Пример #6
0
        public void QueryTwoDifferentTables()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                p1.Addresses.Add(new Adresse()
                {
                    Name = "Myaddress"
                });
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p   = ctx.Persons.FirstOrDefault();
                var adr = ctx.Adresses.FirstOrDefault();
                Assert.That(p.Addresses.First() == adr);
            }
        }
Пример #7
0
        public void AddPersonWithAddressesSelectMany()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                for (int i = 0; i < 3; i++)
                {
                    p1.Addresses.Add(new Adresse()
                    {
                        Name = "Myaddress" + i
                    });
                }
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();
                var adr = ctx.Persons
                          .AsNoTracking()
                          .SelectMany(x => x.Addresses)
                          .Where(x => x.Id > 0)
                          .Where(x => x.Id < 1000)
                          .FirstOrDefault(x => x.Id == 2);
                Assert.That(adr, Is.Not.Null);
            }
        }
Пример #8
0
        public void EnsureOrderByAndWhereIsWorking()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                ctx.Persons.Add(new Person {
                    Name = "C"
                });
                ctx.Persons.Add(new Person {
                    Name = "A"
                });
                ctx.Persons.Add(new Person {
                    Name = "B"
                });
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p = ctx.Persons.OrderBy(x => x.Name).ToList();
                Assert.That(p[0].Name, Is.EqualTo("A"));
                Assert.That(p[1].Name, Is.EqualTo("B"));
                Assert.That(p[2].Name, Is.EqualTo("C"));
            }
        }
Пример #9
0
 /// <summary>
 /// Populates the database with some entries if it is empty
 /// </summary>
 private void PopulateDb(MyTestDbContext myTestDbContext)
 {
     if (myTestDbContext.UserPortfolioItems.Count() == 0)
     {
         Random rnd = new Random();
         myTestDbContext.UserPortfolioItems.Add(new UserPortfolioItem()
         {
             Amount = (Decimal)rnd.NextDouble() * rnd.Next(50_000), CurrencyName = nameof(Rates.CAD)
         });
Пример #10
0
        public void UseTwoDifferentContexts()
        {
            using (var ctx1 = new MyTestDbContext())
            {
                ctx1.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Jürgen"
                };
                p1.Addresses.Add(new Adresse {
                    Name = "AlterWert1"
                });
                p1.Addresses.Add(new Adresse {
                    Name = "AlterWert2"
                });
                ctx1.Persons.Add(p1);
                ctx1.SaveChanges();
            }

            using (var ctx2 = new MyTestDbContext())
            {
                ctx2.SetupAsTestDbContext();
                var persons = ctx2.Persons;

                Assert.AreEqual(2, persons.First().Addresses.Count());
            }

            Person p2;

            using (var ctx3 = new MyTestDbContext())
            {
                ctx3.SetupAsTestDbContext();
                p2      = ctx3.Persons.FirstOrDefault(x => x.Id == 1);
                p2.Name = "ÜberschriebenerWert";
                p2.Addresses.First().Name = "Hallo";
            }

            using (var ctx4 = new MyTestDbContext())
            {
                ctx4.SetupAsTestDbContext();
                ctx4.Entry(p2).State = EntityState.Modified;
                ctx4.SaveChanges();
            }

            using (var ctx5 = new MyTestDbContext())
            {
                ctx5.SetupAsTestDbContext();
                var p3 = ctx5.Persons.FirstOrDefault(x => x.Id == 1);


                Assert.That(p2, Is.Not.EqualTo(p3));
                Assert.That(p3.Name, Is.EqualTo("ÜberschriebenerWert"));
                Assert.That(p3.Addresses.First().Name, Is.EqualTo("AlterWert1"));
            }
        }
Пример #11
0
 public void Performance()
 {
     for (int i = 0; i < 100; i++)
     {
         using (var ctx5 = new MyTestDbContext())
         {
             ctx5.SetupAsTestDbContext();
             var p3 = ctx5.Persons.FirstOrDefault(x => x.Id == 1);
         }
     }
 }
Пример #12
0
        public static void SeedHostDb(MyTestDbContext context)
        {
            context.SuppressAutoSetTenantId = true;

            // Host seed
            new InitialHostDbBuilder(context).Create();

            // Default tenant seed (in host database).
            new DefaultTenantBuilder(context).Create();
            new TenantRoleAndUserBuilder(context, 1).Create();
        }
Пример #13
0
 public void AddItemWithRequiredParentAndExpectException()
 {
     using (var ctx = new MyTestDbContext())
     {
         ctx.SetupAsTestDbContext();
         ctx.Adresses.Add(new Adresse
         {
             Name   = "test",
             Person = null //Das dar nicht sein!
         });
         Assert.Throws <DbEntityValidationException>(() => ctx.SaveChanges());
     }
 }
Пример #14
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            MyTestDbContext myTestDbContext = new MyTestDbContext();

            myTestDbContext.Database.EnsureCreated();
            myTestDbContext.Database.Migrate();
            PopulateDb(myTestDbContext);

            services.AddDbContext <MyTestDbContext>();
            services.AddMiniProfiler().AddEntityFramework(); //Add EFCore tracking to MiniProfiler

            services.AddMvc();
        }
Пример #15
0
        public void SetInternalProperty()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                ctx.TestData.Add(new TestData());
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p = ctx.TestData.FirstOrDefault();
                Assert.That(p.Id, Is.EqualTo(1));
            }
        }
Пример #16
0
        public void FindMethod()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Jürgen"
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();

                var p = ctx.Persons.Find(1);
                Assert.That(p.Name, Is.EqualTo(p1.Name));
            }
        }
Пример #17
0
        public void GetItemTwice()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var person = new Person
                {
                    Name = "Eintrag"
                };
                ctx.Persons.Add(person);
                ctx.SaveChanges();

                var dbEntry = ctx.Persons.FirstOrDefault(x => x.Id == 1);
                Assert.That(person, Is.SameAs(dbEntry));
                Assert.That(person.Id, Is.EqualTo(dbEntry.Id));
            }
        }
Пример #18
0
        public void DeleteItem()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Jürgen"
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();

                var p = ctx.Persons.FirstOrDefault(x => x.Id == 1);
                ctx.Persons.Remove(p);
                ctx.SaveChanges();

                Assert.That(ctx.Persons.Count(), Is.EqualTo(0));
            }
        }
Пример #19
0
        public void SameInstancesInContext()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p1 = new Person {
                    Name = "Jürgen"
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }
            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();

                var p1 = ctx.Persons.FirstOrDefault();
                var p2 = ctx.Persons.FirstOrDefault();
                Assert.That(p1 == p2);
            }
        }
Пример #20
0
        public void AddTwoUniqueEntries()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();

                var p2 = new Person {
                    Name = "Jürgen"
                };
                ctx.Persons.Add(p2);
                ctx.SaveChanges();

                Assert.That(p1.Id, Is.EqualTo(1));
                Assert.That(p2.Id, Is.EqualTo(2));
            }
        }
Пример #21
0
        public void QueryNestedPropertyWithNoProxyAndIncludeTwoLevel()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person
                {
                    Name        = "Hallo1",
                    ChildPerson = new Person
                    {
                        Name      = "Hallo2",
                        Addresses = new List <Adresse>()
                        {
                            new Adresse()
                            {
                                Name = "Adr"
                            }
                        },
                        ChildPerson = new Person
                        {
                            Name = "Hallo3"
                        }
                    }
                };
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();

                var p = ctx.Persons.Include(x => x.ChildPerson.Addresses).FirstOrDefault();
                Assert.That(p.ChildPerson.Addresses.Count, Is.EqualTo(1));
            }
        }
Пример #22
0
        public void QueryNestedPropertyWithProxy()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                var p1 = new Person {
                    Name = "Hallo"
                };
                p1.Addresses.Add(new Adresse()
                {
                    Name = "Myaddress"
                });
                ctx.Persons.Add(p1);
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();
                var p = ctx.Persons.FirstOrDefault();
                Assert.That(p.Addresses.Count, Is.EqualTo(1));
            }
        }
Пример #23
0
        public void FirstOrDefaultNestedProperty()
        {
            using (var ctx = new MyTestDbContext())
            {
                ctx.SetupAsTestDbContext();

                ctx.TestData.Add(new TestData()
                {
                    NestedData = new TestData()
                    {
                        Number = 42
                    }
                });
                ctx.SaveChanges();
            }

            using (var ctx = new MyTestDbContext())
            {
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.SetupAsTestDbContext();
                var data = ctx.TestData.FirstOrDefault(x => x.NestedData.Number == 42);
                Assert.That(data, Is.Not.Null);
            }
        }
Пример #24
0
 public DefaultLanguagesCreator(MyTestDbContext context)
 {
     _context = context;
 }
Пример #25
0
 public HomeController(MyTestDbContext myTestDbContext)
 {
     this.myTestDbContext = myTestDbContext;
 }
Пример #26
0
 public InitialHostDbBuilder(MyTestDbContext context)
 {
     _context = context;
 }
Пример #27
0
 public DefaultTenantBuilder(MyTestDbContext context)
 {
     _context = context;
 }
Пример #28
0
 public DefaultEditionCreator(MyTestDbContext context)
 {
     _context = context;
 }
Пример #29
0
 public TenantRoleAndUserBuilder(MyTestDbContext context, int tenantId)
 {
     _context  = context;
     _tenantId = tenantId;
 }
Пример #30
0
 public ValuesController(MyTestDbContext myTestDbContext)
 {
     _db = myTestDbContext;
 }