using System; using System.Linq; using System.Threading.Tasks; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using Classes; namespace Database { public partial class DatabaseContext : DbContext { private Dictionary Details; public DatabaseContext() { Details = Task.Run(async () => await DetailsHelper.GetDetails()).GetAwaiter().GetResult(); } public DatabaseContext(DbContextOptions options) : base(options) { Details = Task.Run(async () => await DetailsHelper.GetDetails()).GetAwaiter().GetResult(); } public virtual DbSet
Articles { get; set; } public virtual DbSet Configs { get; set; } public async Task InsertArticles(IEnumerable
articles) { try { await Articles.AddRangeAsync(articles); return await SaveChangesAsync(); } catch (Microsoft.EntityFrameworkCore.DbUpdateException) { return -1; // duplicate title id's } } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseMySQL($"server=localhost;port=3306;user={Details["username"]};password={Details["password"]};database={Details["database"]}"); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasAnnotation("ProductVersion", "2.2.1-servicing-10028"); modelBuilder.Entity
(entity => { entity.HasKey(e => e.ArticleID); entity.ToTable("articles", "news_aggregator"); entity.Property(e => e.ArticleID) .HasColumnName("article_id") .HasColumnType("int(11)") .ValueGeneratedOnAdd(); entity.Property(e => e.ArticleLink) .HasColumnName("article_link") .HasMaxLength(64) .IsUnicode(false); entity.Property(e => e.Description) .HasColumnName("description") .HasMaxLength(255) .IsUnicode(false); entity.Property(e => e.ImageLink) .HasColumnName("image_link") .HasMaxLength(128) .IsUnicode(false); entity.Property(e => e.PublishDate) .HasColumnName("publish_date") .HasColumnType("date") .ValueGeneratedNever(); entity.Property(e => e.Source) .HasColumnName("source") .HasMaxLength(8) .IsUnicode(false); entity.Property(e => e.Title) .HasColumnName("title") .HasMaxLength(255) .IsUnicode(false); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.ConfigID); entity.ToTable("configs", "news_aggregator"); entity.Property(e => e.ConfigID) .HasColumnName("config_id") .HasColumnType("int(11)") .ValueGeneratedNever(); entity.Property(e => e.ArticleLink) .HasColumnName("article_link") .HasColumnType("int(11)"); entity.Property(e => e.Description) .HasColumnName("description") .HasColumnType("int(11)"); entity.Property(e => e.ImageLink) .HasColumnName("image_link") .HasColumnType("int(11)"); entity.Property(e => e.PublishDate) .HasColumnName("publish_date") .HasColumnType("int(11)"); entity.Property(e => e.Source) .HasMaxLength(20) .IsUnicode(false); entity.Property(e => e.Title) .HasColumnName("title") .HasColumnType("int(11)"); }); } } }