public void Querying_LazyLoading_CanLoadEntityCollection()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                Assert.Equal(2, context.Products.Count());

                var query = from p in context.Products
                            where p.Name == "Banana"
                            select p;

                var products = query.ToList <Product>();

                Assert.False(products[0].Parts.IsLoaded);

                var count = products[0].Parts.Count;
                Assert.Equal(3, count);

                var parts = products[0].Parts.ToList();

                Assert.Equal("Bolt", parts[0].Name);
                Assert.Equal("Wrench", parts[1].Name);
                Assert.Equal("Hammer", parts[2].Name);

                Assert.True(products[0].Parts.IsLoaded);
            }
        }
Esempio n. 2
0
        public void Queries_Projections_CanProjectToJoinObject()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var q = from p in context.Products
                        join s in context.Suppliers on p.Id equals s.Id
                        select new JoinedProductSuppliers
                {
                    Product  = p,
                    Supplier = s
                };

                var result = q.ToList();

                Assert.Equal(2, result.Count());

                Assert.Equal("Banana", result[0].Product.Name);
                Assert.Equal("Bananas-R-Us", result[0].Supplier.Name);

                Assert.Equal("Plum", result[1].Product.Name);
                Assert.Equal("Plums-R-Us", result[1].Supplier.Name);
            }
        }
Esempio n. 3
0
        public async void Queries_SumAsync_Works()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var productCost = await context.Products.SumAsync(p => (decimal)p.Price);

                Assert.True(productCost.Equals(8.0));
            }
        }
Esempio n. 4
0
        public async void Queries_FirstAsync_Works()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var plum = await context.Products.FirstAsync(p => p.Name == "Plum");

                Assert.True(plum.Name == "Plum");
            }
        }
Esempio n. 5
0
        public async void Queries_CountAsync_Works()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var productCount = await context.Products.CountAsync();

                Assert.Equal(2, productCount);
            }
        }
Esempio n. 6
0
        public async Task Database_Query_CanReadListAsync()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var products = await context.Products.ToListAsync();

                Assert.Equal(2, products.Count());
                Assert.Equal("Banana", products[0].Name);
                Assert.Equal("Plum", products[1].Name);
            }
        }
Esempio n. 7
0
        public void Database_can_read_with_pk()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var product  = context.Products.First(p => p.Id == 1);
                var product2 = context.Products.First(p => p.Id == 2);

                Assert.Equal("Banana", product.Name);
                Assert.Equal("Plum", product2.Name);
            }
        }
        public void Querying_EagerLoading_CanLoadEntityReference()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var query = from p in context.Products.FetchOne(p => p.Supplier)
                            select p;

                var products = query.ToList <Product>();

                Assert.True(products[0].Supplier.IsLoaded);
                Assert.Equal("Bananas-R-Us", products[0].Supplier.Value.Name);
            }
        }
        public void Queries_Simple_CanReadList()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                Assert.Equal(2, context.Products.Count());

                var query = from p in context.Products
                            where p.Name == "Banana"
                            select p;

                var products = query.ToList <Product>();

                Assert.Single(products);
                Assert.Equal("Banana", products[0].Name);
            }
        }
Esempio n. 10
0
        public void Queries_Projections_CanProjectToDTO()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var q = from p in context.Products
                        select new ProductDto
                {
                    ProductDescription = p.Name
                };

                var result = q.ToList();

                Assert.Equal(2, result.Count());
                Assert.Equal("Banana", result[0].ProductDescription);
                Assert.Equal("Plum", result[1].ProductDescription);
            }
        }
        public void Querying_EagerLoading_CanLoadEntityCollection()
        {
            const string connectionString = "Data Source=:memory:";
            var          options          = new DataContextOptionsBuilder().UseSqlite(connectionString).Options;

            using (var context = new TestDataContext(options))
            {
                context.Initialize();

                var query = from p in context.Products.FetchMany(p => p.Parts)
                            select p;

                var products = query.ToList <Product>();

                Assert.True(products[0].Parts.IsLoaded);

                var parts = products[0].Parts.ToList();

                Assert.Equal("Bolt", parts[0].Name);
                Assert.Equal("Wrench", parts[1].Name);
                Assert.Equal("Hammer", parts[2].Name);
            }
        }