Почему моя база данных все еще пуста после того, как я заполнил ее в ASP.NET Core 2.1? - PullRequest
0 голосов
/ 17 января 2019

В веб-приложении ASP.NET Core MVC, использующем Entity Framework, я определил свои модели следующим образом:

using System.Linq;
using System.Threading.Tasks;

namespace NewTechParentPortalV3.Models
{
    public class Student
    {
        public int StudentID { get; set; }
        [StringLength(50, ErrorMessage = "Last name cannot be longer than 50 
characters.")]
        public string LastName { get; set; }
        [StringLength(50, ErrorMessage = "First name cannot be longer than 
50 characters.")]
        public string FirstMidName { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", 
ApplyFormatInEditMode = true)]
        public DateTime EnrollmentDate { get; set; }
        public int ParentID { get; set; }

        public ICollection<Enrollment> Enrollments { get; set; }
        public Parent Parent { get; set; }
    }

    public class Parent
    {
        public int ID { get; set; }
        [StringLength(50, ErrorMessage = "Last name cannot be longer than 50 
characters.")]
        public string LastName { get; set; }
        [StringLength(50, ErrorMessage = "First name cannot be longer than 
50 characters.")]
        public string FirstMidName { get; set; }
        public string Address { get; set; }
        public string Telephone { get; set; }
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

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

Затем я обновил контекст базы данных и заполнил базу данных тестовыми данными.После этого я добавил миграции, изменил строку подключения, чтобы создать новую, а затем обновил базу данных.Но когда я открываю базу данных, она пуста?

Примечание. Мне удалось правильно заполнить базу данных перед тем, как добавить свойства навигации в обе модели, я имею в виду перед добавлением следующих кодов в модель Стьюдента:

            public Parent Parent { get; set; }

и добавление следующих кодов в родительскую модель:

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

Это показывает, что я правильно выполнил другие части, но когда я добавляю приведенные выше строки кода, база данных становится пустой.Может ли кто-нибудь помочь мне выяснить проблему?

1 Ответ

0 голосов
/ 18 января 2019

Две вещи для подтверждения:

  1. Определили ли вы отношения для этих навигационных свойств, например:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Parent>().HasMany(g => g.Students);

    base.OnModelCreating(modelBuilder);
}
  1. Вы присваивали значения друг другу при посеве
var parentId = 1;
var student = new Student
{
  ParentId = parentId
}
....

var parent = new Parent()
{
  ID = parentId
  Students = {student}
}

...