Кажется, мне никогда не удается обновить таблицу мостов, когда я покидаю Entity Framework для автоматического управления сопоставлением.
Классы
public class Tool
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public List TargetTypes { get; } = [];
}
public class TargetType
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public List Tools { get; } = [];
}
Когда я перехожу на страницу редактирования/инструмента, я хочу иметь возможность изменять целевые типы, с которыми связан инструмент.
Кажется, что при отладке код работает нормально — я загружаю все целевые типы в представление, пользователь может их выбрать и нажать кнопку сохранения. Однако в таблицу мостов ничего не добавляется. В этой статье Entity Framework сообщает, что все это обрабатывается автоматически, поэтому мне не очень хочется создавать собственный класс. Почему моя таблица мостов не обновляется в моей базе данных?
Переменные
[BindProperty]
public Tool Tool { get; set; }
[BindProperty]
public List Targets { get; set; } = new List();
[BindProperty]
public List SelectedTargetTypes { get; set; } = new List();
[BindProperty]
public List TargetTypesList { get; set; } = new List();
Метод OnPost
public async Task OnPostAsync()
{
//we want to update the tool options here
if (!ModelState.IsValid)
{
return Page();
}
//Hnadle the target types
foreach (var type in SelectedTargetTypes)
{
var target = await _context.TargetTypes.FindAsync(type);
if (target != null)
{
Tool.TargetTypes.Add(target);
}
}
_context.Attach(Tool).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ToolExists(Tool.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToPage("./Index");
}
CSHTML
Tool Settings
Allowed Targets
@foreach (var targetType in Model.TargetTypesList)
{
@targetType.Text
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -framework