Создание Database Context

Главный класс, координирующий функциональность MvcCore 2.0 для текущей модели данных называется database context. Данный класс наследуется от System.Data.Entity.DbContext. В коде вы определяете, какие сущности включить в модель данных, и также можете определять поведение самого MvcCore. В нашем коде этот класс имеет название SchoolContext.

КлассSchoolContex.cs

using KP.Models;

using Microsoft.EntityFrameworkCore;

 

namespace KP.Data

{

publicclassSchoolContext: DbContext

{

public SchoolContext(DbContextOptions<SchoolContext> options)

      : base(options)

   {

   }

 

public DbSet<Predmet> Predmets { get; set; }

public DbSet<Enrollment> Enrollments { get; set; }

public DbSet<Student> Students { get; set; }

public DbSet<Kafedra> Kafedras { get; set; }

public DbSet<Prepod> Prepods { get; set; }

public DbSet<GroupName> GroupNames { get; set; }

public DbSet<Office_Assignment> Office_Assignments { get; set; }

public DbSet<Predmet_Assignment> Predmet_Assignments { get; set; }

public DbSet<Person> People { get; set; }

 

protectedoverridevoid OnModelCreating(ModelBuilder modelBuilder)

   {

       modelBuilder.Entity<Person>().ToTable("Person");

       modelBuilder.Entity<Predmet>().ToTable("Predmet");

       modelBuilder.Entity<Enrollment>().ToTable("Ball");

       modelBuilder.Entity<Kafedra>().ToTable("Kafedra");

       modelBuilder.Entity<Prepod>().ToTable("Prepod");

       modelBuilder.Entity<Office_Assignment>().ToTable("Prepod_location");

       modelBuilder.Entity<Predmet_Assignment>().ToTable("Group_Predmet_Prepod");

 

 

       modelBuilder.Entity<Predmet_Assignment>()

          .HasKey(c =>new{ c.PredmetID, c.PrepodID});

}

}

}

Инициализация базы данных с тестовыми данными

MvcCore может автоматически создать базу данных при запуске приложения. Вы можете указать, что это должно выплоняться при каждом запуске приложения или только тогда, когда модель рассинхронизирована с существующей базой. Вы можете также написать класс с методом, который MvcCore будет автоматически вызывать перед созданием базы для использования её с тестовыми данными. Мы укажем, что база должна удаляться и пересоздаваться при изменении модели.

Класс DbInitializer.cs

using System;

using System.Linq;

using Microsoft.EntityFrameworkCore;

using Microsoft.Extensions.DependencyInjection;

using KP.Models;

using System.Collections.Generic;

 

namespace KP.Data

{

publicstaticclassDbInitializer

{

publicstaticvoid Initialize(SchoolContext context)

   {

context.Database.EnsureCreated();

 

// Look for any students.

if (context.Students.Any())

       {

return; // DB has been seeded

       }

 

var students = new List<Student>()

       {

 

       };

 

foreach (Student s in students)

       {

context.Students.Add(s);

       }

context.SaveChanges();

 

var groupname = new GroupName[]

      {

 

 

      };

 

foreach (GroupName c in groupname)

       {

           context.GroupNames.Add(c);

       }

context.SaveChanges();

 

var prepods = new Prepod[]

       {

 

       };

 

foreach (Prepod i in prepods)

       {

context.Prepods.Add(i);

       }

context.SaveChanges();

 

var kafedras = new Kafedra[]

       {

 

       };

 

foreach (Kafedra d in kafedras)

       {

context.Kafedras.Add(d);

       }

context.SaveChanges();

 

var predmet = new Predmet[]

       {

 

 

       };

 

foreach (Predmet c in predmet)

       {

           context.Predmets.Add(c);

       }

context.SaveChanges();

 

var office_Assignments = new Office_Assignment[]

       {

 

       };

 

foreach (Office_Assignment o in office_Assignments)

       {

           context.Office_Assignments.Add(o);

       }

context.SaveChanges();

 

var predmetPrepods = new Predmet_Assignment[]

       {

 

 

       };

 

foreach (Predmet_Assignment ci in predmetPrepods)

       {

           context.Predmet_Assignments.Add(ci);

       }

context.SaveChanges();

 

var enrollments = new Enrollment[]

       {

 

       };

 

foreach (Enrollment e in enrollments)

       {

var enrollmentInDataBase = context.Enrollments.Where(

s =>

                       s.StudentID == e.StudentID &&

                       s.Predmet.PredmetID == e.PredmetID).SingleOrDefault();

if (enrollmentInDataBase == null)

           {

context.Enrollments.Add(e);

}

       }

context.SaveChanges();

   }

}

}

ПредставлениеUspex

Index.cshtml – главная веб-страничка

<!DOCTYPEhtml>

<html>

<head>

<metacharset="utf-8"/>

<metaname="viewport"content="initial-scale=1.0"/>

<title>@ViewData["Title"] - Универститет Де Сада</title>

< environmentinclude ="Development">

<linkrel="stylesheet"href="~/lib/bootstrap/dist/css/bootstrap.css"/>

<linkrel="stylesheet"href="~/css/site.css"/>

</ environment >

< environmentexclude ="Development">

< link rel="stylesheet" href ="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"

asp-fallback-href ="~/lib/bootstrap/dist/css/bootstrap.min.css"

asp-fallback-test-class ="sr-only" asp-fallback-test-property ="position" asp-fallback-test-value ="absolute"/>

< link rel="stylesheet" href ="~/css/site.min.css" asp-append-version ="true"/>

</ environment >

</head>

<body>

<center><imgsrc="~/images/database.jpg"/></center>

<navclass="navbar navbar-inverse navbar-fixed-top">

<divclass="container">

<divclass="navbar-header">

<buttontype="button"class="navbar-toggle"data-toggle="collapse"data-target=".navbar-collapse">

<spanclass="icon-bar"></span>

<spanclass="icon-bar"></span>

<spanclass="icon-bar"></span>

</button>

< aasp-area ="" asp-controller ="Home" asp-action ="Index"class="navbar-brand">УниверситетДеСада</ a >

</div>

<divclass="navbar-collapse collapse">

<ulclass="nav navbar-nav">

<li>< aasp-area ="" asp-controller ="GroupNames" asp-action ="Index">Кланы</ a ></li>

<li>< aasp-area ="" asp-controller ="Students" asp-action ="Index">Садисты</ a ></li>

<li>< aasp-area ="" asp-controller ="Enrollments" asp-action ="Index">Оценки</ a ></li>

<li>< aasp-area ="" asp-controller ="Predmets" asp-action ="Index">Предметы</ a ></li>

<li>< aasp-area ="" asp-controller ="Prepods" asp-action ="Index">Мастера</ a ></li>

<li>< aasp-area ="" asp-controller ="Kafedras" asp-action ="Index">Кафедра</ a ></li>

<li>< aasp-area ="" asp-controller ="Uspex" asp-action ="Srball">Среднийбалл</ a ></li>

<li>< aasp-area ="" asp-controller ="Uspex" asp-action ="delStud">Бал< 60</ a ></li>

</ul>

</div>

</div>

</nav>

</body>

</html>

Рисунок 5 – Стартовая страничка, представление Uspex->index.cshtml

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: