diff --git a/MP.FileData/DatabaseModels/FileModel.cs b/MP.FileData/DatabaseModels/FileModel.cs index 65891d6d..3ccf4eb4 100644 --- a/MP.FileData/DatabaseModels/FileModel.cs +++ b/MP.FileData/DatabaseModels/FileModel.cs @@ -32,7 +32,7 @@ namespace MP.FileData.DatabaseModels public string MimeType { get; set; } = ""; public bool Changed { get; set; } = false; public DateTime LastCheck { get; set; } = DateTime.Now.AddYears(-1); - public byte[] Content { get; set; } + public byte[] FileContent { get; set; } [ForeignKey("CodArticolo")] public virtual ArticoloModel Articolo { get; set; } diff --git a/MP.FileData/MP.FileData.csproj b/MP.FileData/MP.FileData.csproj index 09d3bd68..c6cd20ce 100644 --- a/MP.FileData/MP.FileData.csproj +++ b/MP.FileData/MP.FileData.csproj @@ -22,6 +22,7 @@ + diff --git a/MP.FileData/Migrations/20210903094836_InitDb.Designer.cs b/MP.FileData/Migrations/20210903094836_InitDb.Designer.cs new file mode 100644 index 00000000..efee4fe5 --- /dev/null +++ b/MP.FileData/Migrations/20210903094836_InitDb.Designer.cs @@ -0,0 +1,144 @@ +// +using System; +using MP.FileData; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace MP.FileData.Migrations +{ + [DbContext(typeof(MoonPro_ProgContext))] + [Migration("20210903094836_InitDb")] + partial class InitDb + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.9") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MP.FileData.DatabaseModels.ArticoloModel", b => + { + b.Property("CodArticolo") + .HasColumnType("nvarchar(450)"); + + b.Property("DescArticolo") + .HasColumnType("nvarchar(max)"); + + b.Property("Disegno") + .HasColumnType("nvarchar(max)"); + + b.Property("Tipo") + .HasColumnType("nvarchar(max)"); + + b.HasKey("CodArticolo"); + + b.ToTable("Articoli"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.FileModel", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Active") + .HasColumnType("bit"); + + b.Property("Changed") + .HasColumnType("bit"); + + b.Property("CodArticolo") + .HasColumnType("nvarchar(450)"); + + b.Property("FileContent") + .HasColumnType("varbinary(max)"); + + b.Property("IdxMacchina") + .HasColumnType("nvarchar(450)"); + + b.Property("LastCheck") + .HasColumnType("datetime2"); + + b.Property("LastMod") + .HasColumnType("datetime2"); + + b.Property("MimeType") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Path") + .HasColumnType("nvarchar(max)"); + + b.Property("Rev") + .HasColumnType("int"); + + b.Property("Size") + .HasColumnType("int"); + + b.HasKey("FileId"); + + b.HasIndex("CodArticolo"); + + b.HasIndex("IdxMacchina"); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.MacchinaModel", b => + { + b.Property("IdxMacchina") + .HasColumnType("nvarchar(450)"); + + b.Property("BasePath") + .HasColumnType("nvarchar(max)"); + + b.Property("CodMacchina") + .HasColumnType("nvarchar(max)"); + + b.Property("Descrizione") + .HasColumnType("nvarchar(max)"); + + b.Property("ImgUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("Nome") + .HasColumnType("nvarchar(max)"); + + b.Property("Note") + .HasColumnType("nvarchar(max)"); + + b.Property("ShowOrder") + .HasColumnType("int"); + + b.HasKey("IdxMacchina"); + + b.ToTable("Macchine"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.FileModel", b => + { + b.HasOne("MP.FileData.DatabaseModels.ArticoloModel", "Articolo") + .WithMany() + .HasForeignKey("CodArticolo"); + + b.HasOne("MP.FileData.DatabaseModels.MacchinaModel", "Macchina") + .WithMany() + .HasForeignKey("IdxMacchina"); + + b.Navigation("Articolo"); + + b.Navigation("Macchina"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/MP.FileData/Migrations/20210903094836_InitDb.cs b/MP.FileData/Migrations/20210903094836_InitDb.cs new file mode 100644 index 00000000..12a3112d --- /dev/null +++ b/MP.FileData/Migrations/20210903094836_InitDb.cs @@ -0,0 +1,101 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace MP.FileData.Migrations +{ + public partial class InitDb : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Articoli", + columns: table => new + { + CodArticolo = table.Column(type: "nvarchar(450)", nullable: false), + DescArticolo = table.Column(type: "nvarchar(max)", nullable: true), + Disegno = table.Column(type: "nvarchar(max)", nullable: true), + Tipo = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Articoli", x => x.CodArticolo); + }); + + migrationBuilder.CreateTable( + name: "Macchine", + columns: table => new + { + IdxMacchina = table.Column(type: "nvarchar(450)", nullable: false), + CodMacchina = table.Column(type: "nvarchar(max)", nullable: true), + Nome = table.Column(type: "nvarchar(max)", nullable: true), + Descrizione = table.Column(type: "nvarchar(max)", nullable: true), + BasePath = table.Column(type: "nvarchar(max)", nullable: true), + ImgUrl = table.Column(type: "nvarchar(max)", nullable: true), + Note = table.Column(type: "nvarchar(max)", nullable: true), + ShowOrder = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Macchine", x => x.IdxMacchina); + }); + + migrationBuilder.CreateTable( + name: "Files", + columns: table => new + { + FileId = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Active = table.Column(type: "bit", nullable: false), + CodArticolo = table.Column(type: "nvarchar(450)", nullable: true), + IdxMacchina = table.Column(type: "nvarchar(450)", nullable: true), + Name = table.Column(type: "nvarchar(max)", nullable: true), + Rev = table.Column(type: "int", nullable: false), + LastMod = table.Column(type: "datetime2", nullable: false), + Size = table.Column(type: "int", nullable: false), + Path = table.Column(type: "nvarchar(max)", nullable: true), + MimeType = table.Column(type: "nvarchar(max)", nullable: true), + Changed = table.Column(type: "bit", nullable: false), + LastCheck = table.Column(type: "datetime2", nullable: false), + FileContent = table.Column(type: "varbinary(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Files", x => x.FileId); + table.ForeignKey( + name: "FK_Files_Articoli_CodArticolo", + column: x => x.CodArticolo, + principalTable: "Articoli", + principalColumn: "CodArticolo", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Files_Macchine_IdxMacchina", + column: x => x.IdxMacchina, + principalTable: "Macchine", + principalColumn: "IdxMacchina", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_Files_CodArticolo", + table: "Files", + column: "CodArticolo"); + + migrationBuilder.CreateIndex( + name: "IX_Files_IdxMacchina", + table: "Files", + column: "IdxMacchina"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Files"); + + migrationBuilder.DropTable( + name: "Articoli"); + + migrationBuilder.DropTable( + name: "Macchine"); + } + } +} diff --git a/MP.FileData/Migrations/MoonPro_ProgContextModelSnapshot.cs b/MP.FileData/Migrations/MoonPro_ProgContextModelSnapshot.cs new file mode 100644 index 00000000..d9cc5501 --- /dev/null +++ b/MP.FileData/Migrations/MoonPro_ProgContextModelSnapshot.cs @@ -0,0 +1,142 @@ +// +using System; +using MP.FileData; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace MP.FileData.Migrations +{ + [DbContext(typeof(MoonPro_ProgContext))] + partial class MoonPro_ProgContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("ProductVersion", "5.0.9") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MP.FileData.DatabaseModels.ArticoloModel", b => + { + b.Property("CodArticolo") + .HasColumnType("nvarchar(450)"); + + b.Property("DescArticolo") + .HasColumnType("nvarchar(max)"); + + b.Property("Disegno") + .HasColumnType("nvarchar(max)"); + + b.Property("Tipo") + .HasColumnType("nvarchar(max)"); + + b.HasKey("CodArticolo"); + + b.ToTable("Articoli"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.FileModel", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Active") + .HasColumnType("bit"); + + b.Property("Changed") + .HasColumnType("bit"); + + b.Property("CodArticolo") + .HasColumnType("nvarchar(450)"); + + b.Property("FileContent") + .HasColumnType("varbinary(max)"); + + b.Property("IdxMacchina") + .HasColumnType("nvarchar(450)"); + + b.Property("LastCheck") + .HasColumnType("datetime2"); + + b.Property("LastMod") + .HasColumnType("datetime2"); + + b.Property("MimeType") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Path") + .HasColumnType("nvarchar(max)"); + + b.Property("Rev") + .HasColumnType("int"); + + b.Property("Size") + .HasColumnType("int"); + + b.HasKey("FileId"); + + b.HasIndex("CodArticolo"); + + b.HasIndex("IdxMacchina"); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.MacchinaModel", b => + { + b.Property("IdxMacchina") + .HasColumnType("nvarchar(450)"); + + b.Property("BasePath") + .HasColumnType("nvarchar(max)"); + + b.Property("CodMacchina") + .HasColumnType("nvarchar(max)"); + + b.Property("Descrizione") + .HasColumnType("nvarchar(max)"); + + b.Property("ImgUrl") + .HasColumnType("nvarchar(max)"); + + b.Property("Nome") + .HasColumnType("nvarchar(max)"); + + b.Property("Note") + .HasColumnType("nvarchar(max)"); + + b.Property("ShowOrder") + .HasColumnType("int"); + + b.HasKey("IdxMacchina"); + + b.ToTable("Macchine"); + }); + + modelBuilder.Entity("MP.FileData.DatabaseModels.FileModel", b => + { + b.HasOne("MP.FileData.DatabaseModels.ArticoloModel", "Articolo") + .WithMany() + .HasForeignKey("CodArticolo"); + + b.HasOne("MP.FileData.DatabaseModels.MacchinaModel", "Macchina") + .WithMany() + .HasForeignKey("IdxMacchina"); + + b.Navigation("Articolo"); + + b.Navigation("Macchina"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/MP.FileData/MoonPro_ProgContext.cs b/MP.FileData/MoonPro_ProgContext.cs index 1cd809cd..f3438de3 100644 --- a/MP.FileData/MoonPro_ProgContext.cs +++ b/MP.FileData/MoonPro_ProgContext.cs @@ -18,19 +18,42 @@ namespace MP.FileData private IConfiguration _configuration; + [Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")] + public MoonPro_ProgContext() + { + } public MoonPro_ProgContext(IConfiguration configuration) { _configuration = configuration; + try + { + // se non ci fosse... crea o migra! + Database.Migrate(); + } + catch (Exception exc) + { + Log.Error(exc, "Exception during context initialization 01"); + } } public MoonPro_ProgContext(DbContextOptions options) : base(options) { + try + { + // se non ci fosse... crea o migra! + Database.Migrate(); + } + catch (Exception exc) + { + Log.Error(exc, "Exception during context initialization 01"); + } } - public virtual DbSet DbSetArticoli { get; set; } - public virtual DbSet DbSetMacchine { get; set; } + public virtual DbSet DbSetArticoli { get; set; } + public virtual DbSet DbSetMacchine { get; set; } + public virtual DbSet DbSetProgFile { get; set; } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); @@ -42,9 +65,14 @@ namespace MP.FileData if (!optionsBuilder.IsConfigured) { string connString = _configuration.GetConnectionString("Mp.Stats"); - - optionsBuilder.UseSqlServer(connString); - //optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=MoonPro_STATS;Trusted_Connection=True;"); + if (!string.IsNullOrEmpty(connString)) + { + optionsBuilder.UseSqlServer(connString); + } + else + { + optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=MoonPro_PROG;Trusted_Connection=True;"); + } } } @@ -52,46 +80,6 @@ namespace MP.FileData { modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS"); - modelBuilder.Entity(entity => - { - entity.HasNoKey(); - - entity.ToView("v_UI_AnagArticoli"); - - entity.Property(e => e.CodArticolo) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.DescArticolo) - .IsRequired() - .HasMaxLength(250); - - entity.Property(e => e.Disegno) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.Tipo) - .IsRequired() - .HasMaxLength(50); - }); - - modelBuilder.Entity(entity => - { - entity.HasNoKey(); - - entity.ToView("v_UI_Macchine"); - - entity.Property(e => e.CodMacchina).HasMaxLength(50); - - entity.Property(e => e.Descrizione).HasMaxLength(50); - - entity.Property(e => e.IdxMacchina) - .IsRequired() - .HasMaxLength(50); - - entity.Property(e => e.Nome).HasMaxLength(50); - }); - OnModelCreatingPartial(modelBuilder); } }