public bool Delete <TEntity>(List <TEntity> entities) where TEntity : class { try { _dataContext.RemoveRange(entities.AsEnumerable()); return(true); } catch (Exception) { return(false); } }
public IndexResult BuildIndex() { var specs = RetrieveSpecs(); // todo: semantic versioning & version comparison (write that version class!) // todo: use semantic versioning to compare different versions of same package, and set islatest... properties. var added = new List <Nuspec>(); var updated = new List <Nuspec>(); foreach (var spec in specs) { db.Database.EnsureCreated(); var package = db.Packages.FirstOrDefault(p => p.Identifier == spec.Metadata.Id && p.Version == spec.Metadata.Version); if (package == null) { added.Add(spec); AddNewPackage(spec); } else { updated.Add(spec); UpdatePackage(package, spec); } } var remainingKeys = added.Union(updated).Select(spec => $"{spec.Metadata.Id}:{spec.Metadata.Version}").ToArray(); var deletedPackages = db.Packages.Select(p => new { Package = p, Key = $"{p.Identifier}:{p.Version}" }).Where(p => !remainingKeys.Contains(p.Key)).Select(p => p.Package).ToList(); var deleted = deletedPackages.Select(dp => $"{dp.Identifier}:{dp.Version}").ToArray(); db.RemoveRange(deletedPackages); db.SaveChanges(); return(new IndexResult { Added = added.Select(p => $"{p.Metadata.Id}:{p.Metadata.Version}").ToArray(), Updated = updated.Select(p => $"{p.Metadata.Id}:{p.Metadata.Version}").ToArray(), Deleted = deleted }); }