Я использую 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; }