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