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(); } }