diff --git a/db-creation.sql b/db-creation.sql new file mode 100644 index 0000000..c7bf05e --- /dev/null +++ b/db-creation.sql @@ -0,0 +1,28 @@ +CREATE DATABASE [CompaniesDB]; +GO + +USE [CompaniesDB]; +GO + +CREATE TABLE [Companies] ( + [CompanyId] int NOT NULL IDENTITY, + [Name] nvarchar(max) NOT NULL, + [ContractStatus] varchar(15) NOT NULL CHECK ([ContractStatus] IN('NotReachedYet', 'Reached', 'Terminated')), + CONSTRAINT [PK_CompanyId] PRIMARY KEY ([CompanyId]) +); +GO + +CREATE TABLE [Users] ( + [UserId] int NOT NULL IDENTITY, + [CompanyID] int NOT NULL, + [Name] nvarchar(max) NOT NULL, + [Login] nvarchar(max) NOT NULL, + [Password] nvarchar(max) NOT NULL, + CONSTRAINT [PK_UserId] PRIMARY KEY ([UserId]), + CONSTRAINT [FK_Users_Companies] FOREIGN KEY (CompanyID) REFERENCES [Companies] (CompanyId) ON DELETE CASCADE +); +GO + +INSERT INTO [Companies] (Name, ContractStatus) VALUES +('Defend Studio', 'NotReachedYet') +GO \ No newline at end of file diff --git a/eCompanies/App.config b/eCompanies/App.config index 731f6de..9a6820f 100644 --- a/eCompanies/App.config +++ b/eCompanies/App.config @@ -1,6 +1,14 @@ - + + + + + + + + + \ No newline at end of file diff --git a/eCompanies/App.xaml.cs b/eCompanies/App.xaml.cs index e7678d8..2a0f874 100644 --- a/eCompanies/App.xaml.cs +++ b/eCompanies/App.xaml.cs @@ -5,6 +5,7 @@ using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; +using System.Windows.Navigation; namespace eCompanies { diff --git a/eCompanies/Companies.cs b/eCompanies/Companies.cs new file mode 100644 index 0000000..f0e2d28 --- /dev/null +++ b/eCompanies/Companies.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +namespace eCompanies +{ + public partial class Companies + { + public enum Status { NotReachedYet, Reached, Terminated } + public Companies() + { + Users = new HashSet(); + } + + public int CompanyId { get; set; } + public string Name { get; set; } + public string ContractStatus { get; set; } + + public ICollection Users { get; set; } + } +} diff --git a/eCompanies/CompaniesDBContext.cs b/eCompanies/CompaniesDBContext.cs new file mode 100644 index 0000000..3247c2d --- /dev/null +++ b/eCompanies/CompaniesDBContext.cs @@ -0,0 +1,62 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata; + +namespace eCompanies +{ + public partial class CompaniesDBContext : DbContext + { + public CompaniesDBContext() + { + } + + public CompaniesDBContext(DbContextOptions options) + : base(options) + { + } + + public virtual DbSet Companies { get; set; } + public virtual DbSet Users { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=CompaniesDB;Trusted_Connection=True;"); + } + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.CompanyId); + + entity.Property(e => e.ContractStatus) + .IsRequired() + .HasMaxLength(15) + .IsUnicode(false); + + entity.Property(e => e.Name).IsRequired(); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.UserId); + + entity.Property(e => e.CompanyId).HasColumnName("CompanyID"); + + entity.Property(e => e.Login).IsRequired(); + + entity.Property(e => e.Name).IsRequired(); + + entity.Property(e => e.Password).IsRequired(); + + entity.HasOne(d => d.Company) + .WithMany(p => p.Users) + .HasForeignKey(d => d.CompanyId) + .HasConstraintName("FK_Users_Companies"); + }); + } + } +} diff --git a/eCompanies/MainWindow.xaml b/eCompanies/MainWindow.xaml index 661869d..cf1f943 100644 --- a/eCompanies/MainWindow.xaml +++ b/eCompanies/MainWindow.xaml @@ -7,6 +7,7 @@ mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> - + + diff --git a/eCompanies/MainWindow.xaml.cs b/eCompanies/MainWindow.xaml.cs index 410ca18..2f301f5 100644 --- a/eCompanies/MainWindow.xaml.cs +++ b/eCompanies/MainWindow.xaml.cs @@ -23,6 +23,28 @@ namespace eCompanies public MainWindow() { InitializeComponent(); + doSomethingWithDb(); + } + + + private void addTextToBlock(string str = "") + { + textBlock.Text += ("\n" + str); + } + + private void doSomethingWithDb() + { + using (var db = new CompaniesDBContext()) + { + db.Companies.Add(new Companies { Name = "Unknown company", ContractStatus = Companies.Status.NotReachedYet.ToString() }); + var count = db.SaveChanges(); + addTextToBlock(count + " records saved to database"); + + addTextToBlock(); + addTextToBlock("All companies in database:"); + foreach (var company in db.Companies) + addTextToBlock(" - " + company.Name); + } } } } diff --git a/eCompanies/Users.cs b/eCompanies/Users.cs new file mode 100644 index 0000000..118a12c --- /dev/null +++ b/eCompanies/Users.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; + +namespace eCompanies +{ + public partial class Users + { + public int UserId { get; set; } + public int CompanyId { get; set; } + public string Name { get; set; } + public string Login { get; set; } + public string Password { get; set; } + + public Companies Company { get; set; } + } +} diff --git a/eCompanies/eCompanies.csproj b/eCompanies/eCompanies.csproj index 8c529e2..3ab5065 100644 --- a/eCompanies/eCompanies.csproj +++ b/eCompanies/eCompanies.csproj @@ -1,5 +1,6 @@  + Debug @@ -14,6 +15,8 @@ 4 true true + + AnyCPU @@ -35,8 +38,88 @@ 4 + + ..\packages\Microsoft.EntityFrameworkCore.2.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.dll + + + ..\packages\Microsoft.EntityFrameworkCore.Abstractions.2.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Abstractions.dll + + + ..\packages\Microsoft.EntityFrameworkCore.Design.2.1.4\lib\net461\Microsoft.EntityFrameworkCore.Design.dll + + + ..\packages\Microsoft.EntityFrameworkCore.Relational.2.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Relational.dll + + + ..\packages\Microsoft.EntityFrameworkCore.SqlServer.2.1.4\lib\netstandard2.0\Microsoft.EntityFrameworkCore.SqlServer.dll + + + ..\packages\Microsoft.Extensions.Caching.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Caching.Abstractions.dll + + + ..\packages\Microsoft.Extensions.Caching.Memory.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Caching.Memory.dll + + + ..\packages\Microsoft.Extensions.Configuration.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll + + + ..\packages\Microsoft.Extensions.Configuration.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll + + + ..\packages\Microsoft.Extensions.Configuration.Binder.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.Binder.dll + + + ..\packages\Microsoft.Extensions.DependencyInjection.2.1.1\lib\net461\Microsoft.Extensions.DependencyInjection.dll + + + ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll + + + ..\packages\Microsoft.Extensions.Logging.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Logging.dll + + + ..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll + + + ..\packages\Microsoft.Extensions.Options.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Options.dll + + + ..\packages\Microsoft.Extensions.Primitives.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll + + + ..\packages\Remotion.Linq.2.2.0\lib\net45\Remotion.Linq.dll + + + ..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll + + + ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll + + + ..\packages\System.ComponentModel.Annotations.4.5.0\lib\net461\System.ComponentModel.Annotations.dll + + + + ..\packages\System.Data.SqlClient.4.5.1\lib\net461\System.Data.SqlClient.dll + + + ..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + ..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll + + + ..\packages\System.Memory.4.5.1\lib\netstandard2.0\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.1\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll + @@ -55,6 +138,8 @@ MSBuild:Compile Designer + + MSBuild:Compile Designer @@ -63,6 +148,7 @@ App.xaml Code + MainWindow.xaml Code @@ -86,6 +172,7 @@ ResXFileCodeGenerator Resources.Designer.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -95,4 +182,10 @@ + + + Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}. + + + \ No newline at end of file diff --git a/eCompanies/packages.config b/eCompanies/packages.config new file mode 100644 index 0000000..977e2ff --- /dev/null +++ b/eCompanies/packages.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file