Browse Source

Add database context, User type and migrations

master
Nick Rirush 5 years ago
parent
commit
8923b725c2
  1. 49
      Migrations/20190205093645_CreateUsers.Designer.cs
  2. 35
      Migrations/20190205093645_CreateUsers.cs
  3. 47
      Migrations/DatabaseContextModelSnapshot.cs
  4. 2
      Pages/Index.cshtml
  5. 7
      Pages/_Layout.cshtml
  6. 0
      Pages/_ViewImports.cshtml
  7. 3
      Pages/_ViewStart.cshtml
  8. 1
      QuickCHAT.csproj
  9. 30
      Source/Model.cs
  10. 25
      Source/Startup.cs
  11. 3
      appsettings.Development.json

49
Migrations/20190205093645_CreateUsers.Designer.cs

@ -0,0 +1,49 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using QuickCHAT.Models;
namespace QuickCHAT.Migrations
{
[DbContext(typeof(DatabaseContext))]
[Migration("20190205093645_CreateUsers")]
partial class CreateUsers
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
.HasAnnotation("ProductVersion", "2.2.1-servicing-10028")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("QuickCHAT.Models.User", b =>
{
b.Property<int>("UserID")
.ValueGeneratedOnAdd();
b.Property<string>("Description");
b.Property<string>("First");
b.Property<string>("Last");
b.Property<string>("Password");
b.Property<string>("Username")
.IsRequired();
b.HasKey("UserID");
b.HasAlternateKey("Username")
.HasName("AK_Username");
b.ToTable("Users");
});
#pragma warning restore 612, 618
}
}
}

35
Migrations/20190205093645_CreateUsers.cs

@ -0,0 +1,35 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace QuickCHAT.Migrations
{
public partial class CreateUsers : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
UserID = table.Column<int>(nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn),
Username = table.Column<string>(nullable: false),
Password = table.Column<string>(nullable: true),
First = table.Column<string>(nullable: true),
Last = table.Column<string>(nullable: true),
Description = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.UserID);
table.UniqueConstraint("AK_Username", x => x.Username);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Users");
}
}
}

47
Migrations/DatabaseContextModelSnapshot.cs

@ -0,0 +1,47 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using QuickCHAT.Models;
namespace QuickCHAT.Migrations
{
[DbContext(typeof(DatabaseContext))]
partial class DatabaseContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.SerialColumn)
.HasAnnotation("ProductVersion", "2.2.1-servicing-10028")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("QuickCHAT.Models.User", b =>
{
b.Property<int>("UserID")
.ValueGeneratedOnAdd();
b.Property<string>("Description");
b.Property<string>("First");
b.Property<string>("Last");
b.Property<string>("Password");
b.Property<string>("Username")
.IsRequired();
b.HasKey("UserID");
b.HasAlternateKey("Username")
.HasName("AK_Username");
b.ToTable("Users");
});
#pragma warning restore 612, 618
}
}
}

2
Pages/Index.cshtml

@ -0,0 +1,2 @@
@page
<h1>Hello, World!</h1>

7
Pages/_Layout.cshtml

@ -0,0 +1,7 @@
<!DOCTYPE html>
<head>
<title>@ViewData["Title"] - QuickCHAT</title>
</head>
<body>
@RenderBody()
</body>

0
Pages/_ViewImports.cshtml

3
Pages/_ViewStart.cshtml

@ -0,0 +1,3 @@
@{
Layout = "_Layout";
}

1
QuickCHAT.csproj

@ -8,6 +8,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
</ItemGroup>
</Project>

30
Source/Model.cs

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace QuickCHAT.Models {
public class DatabaseContext : DbContext {
public DbSet<User> Users { get; set; }
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
}
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<User>()
.HasAlternateKey(u => u.Username)
.HasName("AK_Username");
}
}
public class User {
public int UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string First { get; set; }
public string Last { get; set; }
public string Description { get; set; }
}
}

25
Source/Startup.cs

@ -5,16 +5,31 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using QuickCHAT.Models;
namespace QuickCHAT
{
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddEntityFrameworkNpgsql()
.AddDbContext<DatabaseContext>(
options => options.UseNpgsql(Configuration.GetConnectionString("MainDatabase"))
)
.BuildServiceProvider();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@ -23,12 +38,12 @@ namespace QuickCHAT
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} else {
app.UseHsts();
app.UseHttpsRedirection();
}
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
app.UseMvc();
}
}
}

3
appsettings.Development.json

@ -5,5 +5,8 @@
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"MainDatabase": "Host=localhost;Database=quickchat;Username=quickchat;Password=quickchat"
}
}

Loading…
Cancel
Save