Вставьте отношение «многие ко многим» из представления в ядре asp.net с EF Core - PullRequest
0 голосов
/ 06 января 2019

Итак, в моем приложении ASP.net Core я вижу, что я добавляю новый ремонт автомобилей, и я также хочу добавить детали в эту модель. База данных содержит 3 таблицы: Ремонт - Детали - Ремонтные детали.

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

Класс ремонта

    public class Repair
    {
        [Key]
        public int RepairId { get; set; }

        public int VehicleId { get; set; }

        public string Notes { get; set; }

        public string Mileage { get; set; }

        public DateTime RepairDate { get; set; }

        public string uuid { get; set; }

        [ForeignKey("VehicleId")]
        public Vehicle Vehicle { get; set; }

        public virtual ICollection<RepairParts> Parts { get; set; }
    }

Класс детали

public class Part
{
    public int PartId { get; set; }
    public int Code { get; set; }
    public string PartCode { get; set; }
    public string Type { get; set; }
    public string Name { get; set; }
    public string Descr { get; set; }
    public string Manufacturer { get; set; }
    public string uuid { get; set; }

    public virtual ICollection<RepairParts> Repairs { get; set; }
}

RepairPart Class

public class RepairParts
{
    public int RepairId { get; set; }
    public virtual Repair Repair { get; set; }

    public int PartId { get; set; }
    public virtual Part Part { get; set; }

}   

Ремонт контроллера

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult 
    Create([Bind("VehicleId,Mileage,RepairDate,Notes")] RepairCreateModel repair)
    {
        try
        {
            Repair rep = new Repair();

            var NewRepair = _mapper.Map(repair, rep);

            _repairService.Add(NewRepair);


        }
        catch (Exception)
        {
            throw;

        }
        return Ok();
    }

Ремонтная служба

    public void Add(Repair repair)
    {
        string userid = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

        repair.uuid = userid;
        _context.Repairs.Add(repair);
        _context.SaveChanges();
    }

Ремонт Создать представление

<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>

<input asp-for="VehicleId" value="@ViewBag.VehicleId" type="hidden" />

<div class="form-group row">
    <label class="col-sm-1 col-form-label">Owner</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" value="@ViewBag.Owner" 
readonly>
    </div>
</div>

<div class="form-group row">
    <label class="col-sm-1 col-form-label">Vehicle</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" value="@ViewBag.Vehicle" 
readonly>
    </div>

    <label class="col-sm-2 col-form-label">Licence Plates</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" 
value="@ViewBag.LicencePlates" readonly>
    </div>
</div>
<div class="form-group row">

    <label class="col-sm-1 col-form-label">Mileage</label>
    <div class="col-sm-2">
        <input asp-for="Mileage" type="text" class="form-control">
    </div>

    <label class="col-sm-2 col-form-label">Date:</label>
    <div class="col-sm-2">
        <input asp-for="RepairDate" type="text" class="form-control">
    </div>
</div>

<div class="form-group row">

    <label class="col-sm-1 col-form-label">Notes</label>
    <div class="col-sm-8 row">
        <textarea asp-for="Notes" rows="5" class="form-control"></textarea>
    </div>
</div>


    <div class="form-group row">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>

</form>

У кого-нибудь есть идеи, как мне этого добиться?

...