private ProductDescription MakeProductDescription(DeploymentDataContext ctx, Product p, IEnumerable <Plugin> plugins) { var desc = new ProductDescription(p.Name, new Version(p.Version), from plugin in plugins select MakePluginDescription(ctx, plugin)); return(desc); }
private Product MakeProductFromDescription(ProductDescription desc) { var product = new Product(); product.Name = desc.Name; product.Version = desc.Version.ToString(); return(product); }
public void Delete(ProductDescription productDescription) { using (var ctx = new DeploymentDataContext()) { try { using (var transaction = new TransactionScope()) { var productEntity = GetExistingProduct(ctx, productDescription.Name, productDescription.Version); DeleteProductPlugins(ctx, productEntity); ctx.Products.DeleteOnSubmit(productEntity); ctx.SubmitChanges(); transaction.Complete(); } } catch (SqlException ex) { throw new ArgumentException("Something went wrong while trying to delete product", ex); } catch (InvalidOperationException ex) { throw new ArgumentException("Something went wrong while trying to delete product", ex); } } }
public void Persist(ProductDescription productDescription) { using (var ctx = new DeploymentDataContext()) { try { using (var transaction = new TransactionScope()) { foreach (var plugin in productDescription.Plugins) { var pluginEntity = GetExistingPlugin(ctx, plugin.Name, plugin.Version); UpdatePlugin(ctx, pluginEntity, plugin); } InsertOrUpdateProduct(ctx, productDescription); ctx.SubmitChanges(); transaction.Complete(); } } catch (SqlException ex) { throw new ArgumentException("Something went wrong while trying to persist product", ex); } catch (InvalidOperationException ex) { throw new ArgumentException("Something went wrong while trying to persist product", ex); } } }
private void InsertOrUpdateProduct(DeploymentDataContext ctx, ProductDescription product) { var productEntity = (from p in ctx.Products where p.Name == product.Name where p.Version == product.Version.ToString() select p).FirstOrDefault() ?? MakeProductFromDescription(product); if (productEntity.Id <= 0) { ctx.Products.InsertOnSubmit(productEntity); ctx.SubmitChanges(); } DeleteProductPlugins(ctx, productEntity); foreach (var plugin in product.Plugins) { var existingPlugin = GetExistingPlugin(ctx, plugin.Name, plugin.Version); ProductPlugin prodPlugin = new ProductPlugin(); prodPlugin.PluginId = existingPlugin.Id; prodPlugin.ProductId = productEntity.Id; ctx.ProductPlugins.InsertOnSubmit(prodPlugin); } }
public void DeleteProduct(ProductDescription product) { var store = new PluginStore(); store.Delete(product); }
public void DeployProduct(ProductDescription product) { var store = new PluginStore(); store.Persist(product); }
private Product MakeProductFromDescription(ProductDescription desc) { var product = new Product(); product.Name = desc.Name; product.Version = desc.Version.ToString(); return product; }
private ProductDescription MakeProductDescription(DeploymentDataContext ctx, Product p, IEnumerable<Plugin> plugins) { var desc = new ProductDescription(p.Name, new Version(p.Version), from plugin in plugins select MakePluginDescription(ctx, plugin)); return desc; }