Esempio n. 1
0
        public void TestFixtureSetup()
        {
            if (Directory.Exists("CustomerDataTests"))
            {
                Directory.Delete("CustomerDataTests", recursive: true);
            }

            _sessionFactory = SessionFactory.CreateTestSessionFactory(new ConsoleMapPath().MapPath("CustomerDataTests"));
            var doc    = XDocument.Load(Path.Combine("TestData", "TestData.xml"));
            var import = new XmlImport(doc, "http://tempuri.org/Database.xsd");

            using (var session = _sessionFactory.OpenSession())
            {
                import.Parse(new[] { typeof(Customer), typeof(Order), typeof(Product) },
                             (type, obj) =>
                {
                    Switch.On(obj)
                    .Case((Customer c) => session.Save(c))
                    .Case((Order o) => session.Save(o))
                    .Case((Product p) => session.Save(p))
                    .ElseFail();
                },
                             onIgnore: (type, property) =>
                {
                    Console.WriteLine("ignoring property {1} on {0}", type.Name, property.PropertyType.Name);
                });
                session.Commit();
            }
            using (var session = _sessionFactory.OpenSession())
            {
                int sequence = 0;
                import.ParseConnections("OrderProduct", "Product", "Order", (productId, orderId) =>
                {
                    var product = session.Get <Product>(productId);
                    var order   = session.Get <Order>(orderId);
                    session.Save(new OrderProduct {
                        OrderId = order.Id, ProductId = product.Id, Id = ++sequence
                    });
                });

                import.ParseIntProperty("Order", "Customer", (orderId, customerId) =>
                {
                    session.Get <Order>(orderId).Customer = session.Get <Customer>(customerId).Id;
                });
                session.Commit();
            }
        }
        public void TestFixtureSetup()
        {
            if (Directory.Exists("CustomerDataTests")) { Directory.Delete("CustomerDataTests", recursive: true); }

            _sessionFactory = SessionFactory.CreateTestSessionFactory(new ConsoleMapPath().MapPath("CustomerDataTests"));
            var doc = XDocument.Load(Path.Combine("TestData", "TestData.xml"));
            var import = new XmlImport(doc, "http://tempuri.org/Database.xsd");
            using (var session = _sessionFactory.OpenSession())
            {
                import.Parse(new[] { typeof(Customer), typeof(Order), typeof(Product) },
                    (type, obj) =>
                    {
                        Switch.On(obj)
                            .Case((Customer c) => session.Save(c))
                            .Case((Order o) => session.Save(o))
                            .Case((Product p) => session.Save(p))
                            .ElseFail();
                    },
                    onIgnore: (type, property) =>
                    {
                        Console.WriteLine("ignoring property {1} on {0}", type.Name, property.PropertyType.Name);
                    });
                session.Commit();
            }
            using (var session = _sessionFactory.OpenSession())
            {
                int sequence = 0;
                import.ParseConnections("OrderProduct", "Product", "Order", (productId, orderId) =>
                {
                    var product = session.Get<Product>(productId);
                    var order = session.Get<Order>(orderId);
                    session.Save(new OrderProduct { OrderId = order.Id, ProductId = product.Id, Id = ++sequence });
                });

                import.ParseIntProperty("Order", "Customer", (orderId, customerId) =>
                {
                    session.Get<Order>(orderId).Customer = session.Get<Customer>(customerId).Id;
                });
                session.Commit();
            }
        }