Esempio n. 1
0
        public void Task3_3()
        {
            var products = new List <Product>()
            {
            };

            products.Add(
                new Product
            {
                ProductName = "Apple",
                Supplier    = new Supplier {
                    CompanyName = "Fruits from Joe"
                },
                Category = new Category {
                    CategoryName = "Organic food"
                }
            });

            products.Add(
                new Product
            {
                ProductName = "Banana",
                Supplier    = new Supplier {
                    CompanyName = "Fruits from Joe"
                },
                Category = new Category {
                    CategoryName = "Organic food"
                }
            });

            try
            {
                dbNorthwind.BeginTransaction();

                foreach (var product in products)
                {
                    var supplier = dbNorthwind.Suppliers.FirstOrDefault(s => s.CompanyName == product.Supplier.CompanyName);
                    if (supplier == null)
                    {
                        Supplier newSupplier = new Supplier {
                            CompanyName = product.Supplier.CompanyName
                        };
                        product.SupplierId = Convert.ToInt32(dbNorthwind.InsertWithIdentity(newSupplier));
                    }
                    else
                    {
                        product.SupplierId = supplier.SupplierId;
                    }

                    var category = dbNorthwind.Categories.FirstOrDefault(c => c.CategoryName == product.Category.CategoryName);
                    if (category == null)
                    {
                        Category newCategory = new Category {
                            CategoryName = product.Category.CategoryName
                        };
                        product.CategoryId = Convert.ToInt32(dbNorthwind.InsertWithIdentity(newCategory));
                    }
                    else
                    {
                        product.CategoryId = category.CategoryId;
                    }
                }

                dbNorthwind.BulkCopy(products);
                dbNorthwind.CommitTransaction();
            }
            catch
            {
                dbNorthwind.RollbackTransaction();
            }
        }