Данные из формы отправляются в связанную таблицу

Рейтинг: 0Ответов: 1Опубликовано: 04.06.2023

Моя проблема заключается в том, что при отправлении данных из формы в базу данных, но они отправляются в связанную таблицу

Я отправляю данные в две таблицы: EquipmentTradeOffers и Orders

Orders:

public class Order
{
    public int Id { get; set; }
    public bool IsDeleted { get; set; }

    public DateTime OrderDate { get; set; }
    public DateTime DeliveryDate { get; set; }

    public int EmployeeId { get; set; }

    public Employee Employee { get; set; }

    public ICollection<EquipmentTradeOffer> EquipmentTradeOffers { get; set; }
    public ICollection<MaterialTradeOffer> MaterialTradeOffers { get; set; }

    public Order()
    {

    }
}

EquipmentTradeOffers:

public class EquipmentTradeOffer
{
    
    public int OrderId { get; set; }
    public int EquipmentId { get; set; }
    public bool IsDeleted { get; set; }

    public double Price { get; set; }
    public int Count { get; set; }

    public Order Order { get; set; }
    public Equipment Equipment { get; set; }

    public EquipmentTradeOffer()
    {

    }
}

Отправка идёт из этой формы:

<form method="post">
    <div class="modal-body">
        <div class="justify-content-between align-items-start d-flex row g-3">

            <div class="col">
                <label asp-for="NewEquipmentTradeOffer.Equipment" class="fw-bold fs-6">Наименование</label>
                <select required asp-for="NewEquipmentTradeOffer.EquipmentId" class="form-control" asp-items="@Model.Equipments">
                    <option value="">Выберите оборудование</option>
                </select>
                <span asp-validation-for="NewEquipmentTradeOffer.EquipmentId" class="text-danger"></span>
            </div>

            <div class="col">
                <label asp-for="NewEquipmentTradeOffer.OrderId" class="fw-bold fs-6">ID Заказа</label>
                <input required type="text" asp-for="NewEquipmentTradeOffer.OrderId" id="input1" class="form-control" oninput="this.value = this.value.replace(/[^0-9]/g, '')" placeholder="ID" />
                <input type="hidden" asp-for="NewOrder.Id" id="input2" />
                <span asp-validation-for="@Model.NewEquipmentTradeOffer.OrderId" class="text-danger"></span>
            </div>
        </div>

        <div class="mb-2">
            <label asp-for="NewEquipmentTradeOffer.Equipment.Supplier" class="fw-bold fs-6">Поставщик</label>
            <select required asp-for="NewEquipmentTradeOffer.Equipment.SupplierId" class="form-control" asp-items="@Model.Suppliers">
                <option value="">Выберите поставщика</option>
            </select>
            <span asp-validation-for="NewEquipmentTradeOffer.Equipment.SupplierId" class="text-danger"></span>
        </div>

        <div class="mb-2">
            <div class="justify-content-between align-items-start d-flex row g-3">
                <div class="col">
                    <label asp-for="@Model.NewEquipmentTradeOffer.Price" class="fw-bold fs-6">Стоимость</label>
                </div>
                <div class="col">
                    <label asp-for="@Model.NewEquipmentTradeOffer.Count" class="fw-bold fs-6">Количество</label>
                </div>
            </div>
            <div class="justify-content-between align-items-start d-flex row g-3">
                <div class="col">
                    <input required asp-for="@Model.NewEquipmentTradeOffer.Price" type="text" class="form-control " placeholder="Стоимость" oninput="this.value = this.value.replace(/[^0-9\,]/g, '')" />
                    <span asp-validation-for="@Model.NewEquipmentTradeOffer.Price" class="text-danger"></span>
                </div>
                <div class="col">
                    <input required asp-for="@Model.NewEquipmentTradeOffer.Count" type="text" class="form-control" placeholder="Количество" oninput="this.value = this.value.replace(/[^0-9]/g, '')" />
                    <span asp-validation-for="@Model.NewEquipmentTradeOffer.Count" class="text-danger"></span>
                </div>
            </div>
        </div>

        <div>
            <div class="justify-content-between d-flex row g-3">
                <div class="col">
                    <label asp-for="@Model.NewOrder.OrderDate" class="fw-bold fs-6">Дата заказа</label>
                </div>
                <div class="col">
                    <label asp-for="@Model.NewOrder.DeliveryDate" class="fw-bold fs-6">Дата доставки</label>
                </div>
            </div>
            <div class="justify-content-between d-flex row g-3">
                <div class="col-md-6 ">
                    <input required asp-for="@Model.NewOrder.OrderDate" type="date" class="form-control" placeholder="Дата" />
                    <span asp-validation-for="@Model.NewOrder.OrderDate" class="text-danger"></span>
                </div>

                <div class="col-md-6 ">
                    <input required asp-for="@Model.NewOrder.DeliveryDate" type="date" class="form-control" />
                    <span asp-validation-for="@Model.NewOrder.DeliveryDate" class="text-danger"></span>
                </div>
            </div>
            <div class="mb-2">
                <label asp-for="NewOrder.Employee" class="fw-bold fs-6">Заказчик (Сотрудник)</label>
                <select required asp-for="NewOrder.EmployeeId" class="form-control" asp-items="@Model.Employees">
                    <option value="">Выберите сотрудника</option>
                </select>
                <span asp-validation-for="NewOrder.EmployeeId" class="text-danger"></span>
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-outline-danger" data-bs-dismiss="modal">Закрыть</button>
        <button type="submit" class="btn btn-outline-success">Сохранить</button>
    </div>
</form>

Метод для отправки данных:

public IActionResult OnPost()
    {
        _context.EquipmentTradeOffers.Add(NewEquipmentTradeOffer);
        _context.Orders.Add(NewOrder);
        _context.SaveChanges();
        return RedirectToPage("/EquipmentArrival");
    }

Вот сама ошибка: Скриншот ошибки

Ответы

▲ 0Принят

Я нашёл ошибку и она оказалась очень глупой, я передавал зачем-то свойство SupplierId, которое имеется в связанной таблице Equipment. Поэтому появлялась эта ошибка