Создание новой записи в EF Core приводит к тому, что таблицы поиска вставляют новые строки - PullRequest
0 голосов
/ 07 апреля 2020

Я использую EF Core, со страницами бритвы CRUD. В моем родительском классе у меня есть свойства для 3 дочерних таблиц и свойства для их идентификаторов. Значения отображаются правильно везде (просмотр деталей, редактирование, в сетке ... без проблем.) Они отображаются правильно (в раскрывающихся списках) при попытке создать новую запись.

Родительский класс

    public class Sample
    {
        public int Id {get; set;}

        public int CityId { get; set; }
        public City City { get; set; }

        public int StateId { get; set; }
        public State State { get; set; }

        public int CountyId { get; set; }
        public County County { get; set; }

        public DateTimeOffset DateReceived { get; set; } 
        public DateTimeOffset DateCreated { get; set; }
        public string DistributedTo { get; set; }
    }

Класс города

    public class City
    {
        public int Id {get; set;}
        public string value {get; set;}
    }

два других поиска выполняются одинаково.

Все работает правильно, КРОМЕ ТОГО, когда я создаю новую запись:

  • EF Core вставляет новые записи в дочерние (справочные) таблицы,
  • Новые записи имеют идентификатор выбранного значения в свойстве VALUE,
  • тогда идентификаторы новых дочерних записей вставляется в родительскую таблицу (в CityId, StateId, CountyId)
  • Вместо идентификатора, фактически выбранного в раскрывающихся списках.

Так, например, если я выберите значение с идентификатором: 1 в раскрывающемся списке «Состояние» вместо значения 1 в Sample.StateId, в таблице состояний создается новая запись с идентификатором = 51, значением = 1, а затем 51 - в столбце Sample.StateId .

Код для сохранения новой записи:

    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        _context.Samples.Add(Sample);
        await _context.SaveChangesAsync();
        return RedirectToPage("./Index");
    }

Релиз Вант часть моего класса Context:

    public DbSet<Sample> Samples { get; set; }
    public DbSet<City> Cities { get; set; }
    public DbSet<State> States { get; set; }
    public DbSet<County> Counties { get; set; }
...