From 74022c737a50e3d2b1f31b2488bef8ee54093844 Mon Sep 17 00:00:00 2001
From: SergeevaAA <aas189@tpu.ru>
Date: Fri, 23 Oct 2020 21:56:15 +0700
Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?=
 =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?=
 =?UTF-8?q?=20=D1=81=20=D0=91=D0=94=20-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?=
 =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20=D0=BA?=
 =?UTF-8?q?=D0=BE=D0=BD=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0=20-=20=D0=A3?=
 =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=8F=D0=B7?=
 =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20?=
 =?UTF-8?q?=D0=B0=D1=82=D1=80=D0=B8=D0=B1=D1=83=D1=82=D0=BE=D0=B2=20=D0=BA?=
 =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=BE=D0=B2=20-=20=D0=94=D0=BE=D0=B1?=
 =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=BE?=
 =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20-=20=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE?=
 =?UTF-8?q?=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BE?=
 =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE?=
 =?UTF-8?q?=D0=BD=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0=20=D0=91=D0=94=20-?=
 =?UTF-8?q?=20=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B0=20=D0=BC=D0=B8?=
 =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20?=
 =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B0?=
 =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=20=D0=B2=20=D0=91=D0=94?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 source/FileDesk.DataAccess/Class1.cs          |  8 --
 .../FileDesk.DataAccess.csproj                | 18 ++++
 ..._FilesAndDownloadsTablesCreate.Designer.cs | 88 +++++++++++++++++++
 ...023144738_FilesAndDownloadsTablesCreate.cs | 63 +++++++++++++
 .../FileDeskContextModelSnapshot.cs           | 87 ++++++++++++++++++
 .../Repository/FileDeskContext.cs             | 49 +++++++++++
 .../FileDesk.Domain/Models/AbstractEntity.cs  |  1 +
 source/FileDesk.Domain/Models/Download.cs     |  7 +-
 source/FileDesk.Domain/Models/File.cs         | 26 +++++-
 source/FileDesk.Web/FileDesk.Web.csproj       | 12 +++
 source/FileDesk.Web/Startup.cs                | 20 ++---
 source/FileDesk.Web/appsettings.json          |  3 +
 12 files changed, 359 insertions(+), 23 deletions(-)
 delete mode 100644 source/FileDesk.DataAccess/Class1.cs
 create mode 100644 source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.Designer.cs
 create mode 100644 source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.cs
 create mode 100644 source/FileDesk.DataAccess/Migrations/FileDeskContextModelSnapshot.cs
 create mode 100644 source/FileDesk.DataAccess/Repository/FileDeskContext.cs

diff --git a/source/FileDesk.DataAccess/Class1.cs b/source/FileDesk.DataAccess/Class1.cs
deleted file mode 100644
index 6c3ed65..0000000
--- a/source/FileDesk.DataAccess/Class1.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System;
-
-namespace FileDesk.DataAccess
-{
-    public class Class1
-    {
-    }
-}
diff --git a/source/FileDesk.DataAccess/FileDesk.DataAccess.csproj b/source/FileDesk.DataAccess/FileDesk.DataAccess.csproj
index cb63190..e3b322b 100644
--- a/source/FileDesk.DataAccess/FileDesk.DataAccess.csproj
+++ b/source/FileDesk.DataAccess/FileDesk.DataAccess.csproj
@@ -4,4 +4,22 @@
     <TargetFramework>netcoreapp3.1</TargetFramework>
   </PropertyGroup>
 
+  <ItemGroup>
+    <Folder Include="Migrations\" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.9" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.9" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.9" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.9">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\FileDesk.Domain\FileDesk.Domain.csproj" />
+  </ItemGroup>
+
 </Project>
diff --git a/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.Designer.cs b/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.Designer.cs
new file mode 100644
index 0000000..c7715a5
--- /dev/null
+++ b/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.Designer.cs
@@ -0,0 +1,88 @@
+// <auto-generated />
+using System;
+using FileDesk.DataAccess.Repository;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace FileDesk.DataAccess.Migrations
+{
+    [DbContext(typeof(FileDeskContext))]
+    [Migration("20201023144738_FilesAndDownloadsTablesCreate")]
+    partial class FilesAndDownloadsTablesCreate
+    {
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "3.1.9")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128)
+                .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+            modelBuilder.Entity("FileDesk.Domain.Models.Download", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<DateTime>("DateTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("FileId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("IpAddress")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("FileId");
+
+                    b.ToTable("Downloads");
+                });
+
+            modelBuilder.Entity("FileDesk.Domain.Models.File", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<byte[]>("Content")
+                        .IsRequired()
+                        .HasColumnType("varbinary(max)");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Format")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime>("UploadDateTime")
+                        .HasColumnType("datetime2");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Files");
+                });
+
+            modelBuilder.Entity("FileDesk.Domain.Models.Download", b =>
+                {
+                    b.HasOne("FileDesk.Domain.Models.File", "File")
+                        .WithMany("Downloads")
+                        .HasForeignKey("FileId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.cs b/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.cs
new file mode 100644
index 0000000..d973bd8
--- /dev/null
+++ b/source/FileDesk.DataAccess/Migrations/20201023144738_FilesAndDownloadsTablesCreate.cs
@@ -0,0 +1,63 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace FileDesk.DataAccess.Migrations
+{
+    public partial class FilesAndDownloadsTablesCreate : Migration
+    {
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "Files",
+                columns: table => new
+                {
+                    Id = table.Column<long>(nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    Name = table.Column<string>(nullable: false),
+                    Description = table.Column<string>(nullable: false),
+                    UploadDateTime = table.Column<DateTime>(nullable: false),
+                    Content = table.Column<byte[]>(nullable: false),
+                    Format = table.Column<int>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Files", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "Downloads",
+                columns: table => new
+                {
+                    Id = table.Column<long>(nullable: false)
+                        .Annotation("SqlServer:Identity", "1, 1"),
+                    FileId = table.Column<long>(nullable: false),
+                    DateTime = table.Column<DateTime>(nullable: false),
+                    IpAddress = table.Column<string>(nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_Downloads", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_Downloads_Files_FileId",
+                        column: x => x.FileId,
+                        principalTable: "Files",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_Downloads_FileId",
+                table: "Downloads",
+                column: "FileId");
+        }
+
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "Downloads");
+
+            migrationBuilder.DropTable(
+                name: "Files");
+        }
+    }
+}
\ No newline at end of file
diff --git a/source/FileDesk.DataAccess/Migrations/FileDeskContextModelSnapshot.cs b/source/FileDesk.DataAccess/Migrations/FileDeskContextModelSnapshot.cs
new file mode 100644
index 0000000..11c79d4
--- /dev/null
+++ b/source/FileDesk.DataAccess/Migrations/FileDeskContextModelSnapshot.cs
@@ -0,0 +1,87 @@
+// <auto-generated />
+using System;
+using FileDesk.DataAccess.Repository;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+namespace FileDesk.DataAccess.Migrations
+{
+    [DbContext(typeof(FileDeskContext))]
+    partial class FileDeskContextModelSnapshot : ModelSnapshot
+    {
+        protected override void BuildModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "3.1.9")
+                .HasAnnotation("Relational:MaxIdentifierLength", 128)
+                .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+            modelBuilder.Entity("FileDesk.Domain.Models.Download", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<DateTime>("DateTime")
+                        .HasColumnType("datetime2");
+
+                    b.Property<long>("FileId")
+                        .HasColumnType("bigint");
+
+                    b.Property<string>("IpAddress")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("FileId");
+
+                    b.ToTable("Downloads");
+                });
+
+            modelBuilder.Entity("FileDesk.Domain.Models.File", b =>
+                {
+                    b.Property<long>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("bigint")
+                        .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+                    b.Property<byte[]>("Content")
+                        .IsRequired()
+                        .HasColumnType("varbinary(max)");
+
+                    b.Property<string>("Description")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<int>("Format")
+                        .HasColumnType("int");
+
+                    b.Property<string>("Name")
+                        .IsRequired()
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<DateTime>("UploadDateTime")
+                        .HasColumnType("datetime2");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("Files");
+                });
+
+            modelBuilder.Entity("FileDesk.Domain.Models.Download", b =>
+                {
+                    b.HasOne("FileDesk.Domain.Models.File", "File")
+                        .WithMany("Downloads")
+                        .HasForeignKey("FileId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
diff --git a/source/FileDesk.DataAccess/Repository/FileDeskContext.cs b/source/FileDesk.DataAccess/Repository/FileDeskContext.cs
new file mode 100644
index 0000000..2db4ac4
--- /dev/null
+++ b/source/FileDesk.DataAccess/Repository/FileDeskContext.cs
@@ -0,0 +1,49 @@
+namespace FileDesk.DataAccess.Repository
+{
+    using FileDesk.Domain.Models;
+    using Microsoft.EntityFrameworkCore;
+    using System.Linq;
+    using System.Reflection;
+
+    /// <summary>
+    /// Класс для работы с БД
+    /// </summary>
+    public class FileDeskContext : DbContext
+    {
+        /// <summary>
+        /// Создает новый экземпляр класса <see cref="FileDeskContext"/>
+        /// </summary>
+        public FileDeskContext() { }
+
+        /// <summary>
+        /// Создает новый экземпляр класса <see cref="FileDeskContext"/>
+        /// </summary>
+        /// <param name="options">Опции</param>
+        public FileDeskContext(DbContextOptions options) : base(options) { }
+
+        /// <summary>
+        /// Файлы
+        /// </summary>
+        public DbSet<File> Files { get; set; }
+
+        /// <summary>
+        ///  Скачивания файлов
+        /// </summary>
+        public DbSet<Download> Downloads { get; set; }
+
+        /// <summary>
+        /// Метод при создании БД
+        /// </summary>
+        /// <param name="modelBuilder"></param>
+        protected override void OnModelCreating(ModelBuilder modelBuilder)
+        {
+            var entityTypes = modelBuilder.Model.GetEntityTypes().Select(t => t.ClrType).ToList();
+
+            foreach (var entityType in entityTypes)
+            {
+                var method = entityType.GetMethod("OnModelCreating", System.Reflection.BindingFlags.Static | BindingFlags.NonPublic);
+                method?.Invoke(null, new object[] { modelBuilder });
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/source/FileDesk.Domain/Models/AbstractEntity.cs b/source/FileDesk.Domain/Models/AbstractEntity.cs
index dfb8f77..3c5f1e2 100644
--- a/source/FileDesk.Domain/Models/AbstractEntity.cs
+++ b/source/FileDesk.Domain/Models/AbstractEntity.cs
@@ -1,5 +1,6 @@
 namespace FileDesk.Domain.Models
 {
+    using System.ComponentModel.DataAnnotations;
     using System.ComponentModel.DataAnnotations.Schema;
 
     /// <summary>
diff --git a/source/FileDesk.Domain/Models/Download.cs b/source/FileDesk.Domain/Models/Download.cs
index 906f735..313fe81 100644
--- a/source/FileDesk.Domain/Models/Download.cs
+++ b/source/FileDesk.Domain/Models/Download.cs
@@ -1,15 +1,18 @@
 namespace FileDesk.Domain.Models
 {
     using System;
+    using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations.Schema;
 
     /// <summary>
     /// Скачивание файла
     /// </summary>
-    public class Download
+    public class Download : AbstractEntity
     {
         /// <summary>
         /// Идентификатор файла
         /// </summary>
+        [Required]
         public long FileId { get; set; }
 
         /// <summary>
@@ -20,11 +23,13 @@
         /// <summary>
         /// Дата и время скачивания
         /// </summary>
+        [Required]
         public DateTime DateTime { get; set; }
 
         /// <summary>
         /// IP-адрес компьютера, на который был скачан файл
         /// </summary>
+        [Required]
         public string IpAddress { get; set; }
     }
 }
\ No newline at end of file
diff --git a/source/FileDesk.Domain/Models/File.cs b/source/FileDesk.Domain/Models/File.cs
index 59fa186..e6f6092 100644
--- a/source/FileDesk.Domain/Models/File.cs
+++ b/source/FileDesk.Domain/Models/File.cs
@@ -2,7 +2,9 @@
 {
     using FileDesk.Domain.Enums;
     using System;
-    using System.Reflection.Metadata;
+    using System.Collections.Generic;
+    using System.ComponentModel.DataAnnotations;
+    using System.ComponentModel.DataAnnotations.Schema;
 
     /// <summary>
     /// Файл
@@ -12,26 +14,44 @@
         /// <summary>
         /// Название
         /// </summary>
+        [Required]
         public string Name { get; set; }
 
         /// <summary>
         /// Описание
         /// </summary>
+        [Required]
         public string Description { get; set; }
 
         /// <summary>
         /// Дата и время добавления
         /// </summary>
+        [Required]
         public DateTime UploadDateTime { get; set; }
 
         /// <summary>
-        /// Сам файл
+        /// Содержимое файла
         /// </summary>
-        public Blob Blob { get; set; }
+        [Required]
+        public byte[] Content { get; set; }
 
         /// <summary>
         /// Формат
         /// </summary>
+        [Required]
         public FileFormat Format { get; set; }
+
+        /// <summary>
+        /// Список скачиваний
+        /// </summary>
+        public List<Download> Downloads { get; set; }
+
+        /// <summary>
+        /// Создает новый экземпляр класса <see cref="File"/>
+        /// </summary>
+        public File()
+        {
+            Downloads = new List<Download>();
+        }
     }
 }
\ No newline at end of file
diff --git a/source/FileDesk.Web/FileDesk.Web.csproj b/source/FileDesk.Web/FileDesk.Web.csproj
index 92605c5..dd6d599 100644
--- a/source/FileDesk.Web/FileDesk.Web.csproj
+++ b/source/FileDesk.Web/FileDesk.Web.csproj
@@ -4,4 +4,16 @@
     <TargetFramework>netcoreapp3.1</TargetFramework>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.9" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\FileDesk.DataAccess\FileDesk.DataAccess.csproj" />
+  </ItemGroup>
+
 </Project>
diff --git a/source/FileDesk.Web/Startup.cs b/source/FileDesk.Web/Startup.cs
index 6399c58..31beba6 100644
--- a/source/FileDesk.Web/Startup.cs
+++ b/source/FileDesk.Web/Startup.cs
@@ -1,16 +1,13 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.AspNetCore.HttpsPolicy;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-
 namespace FileDesk.Web
 {
+    using FileDesk.DataAccess.Repository;
+    using Microsoft.AspNetCore.Builder;
+    using Microsoft.AspNetCore.Hosting;
+    using Microsoft.EntityFrameworkCore;
+    using Microsoft.Extensions.Configuration;
+    using Microsoft.Extensions.DependencyInjection;
+    using Microsoft.Extensions.Hosting;
+
     public class Startup
     {
         public Startup(IConfiguration configuration)
@@ -23,6 +20,7 @@ namespace FileDesk.Web
         // This method gets called by the runtime. Use this method to add services to the container.
         public void ConfigureServices(IServiceCollection services)
         {
+            services.AddDbContext<FileDeskContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
             services.AddControllersWithViews();
         }
 
diff --git a/source/FileDesk.Web/appsettings.json b/source/FileDesk.Web/appsettings.json
index d9d9a9b..61a7955 100644
--- a/source/FileDesk.Web/appsettings.json
+++ b/source/FileDesk.Web/appsettings.json
@@ -1,4 +1,7 @@
 {
+  "ConnectionStrings": {
+    "DefaultConnection": "Server=ANASTASIYA\\SQLEXPRESS;Database=FileDesk;Trusted_Connection=True;"
+  },
   "Logging": {
     "LogLevel": {
       "Default": "Information",
-- 
GitLab