Как создать несколько строк одновременно в Entity Framework Core? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь добавить несколько строк в базу данных MySql, используя ASP. net Core с Entity Framework Core. Я хочу добавить несколько строк в отношение один ко многим. У меня есть код:

@model Products.Models.SideEffect
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

@{
    ViewData["Title"] = "Create";
}

<h1>Create</h1>

<h4>SideEffect</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group" id="side-effect-list">
                <a href="#" id="add">Add</a>
                <br />
                <label asp-for="SideEffects" class="control-label"></label>
                <input asp-for="SideEffects" class="form-control side-effect" name="SideEffects[0].SideEffect" />
                <span asp-validation-for="SideEffects" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="ProductName" class="control-label"></label>
                <select asp-for="ProductName" class ="form-control" asp-items="ViewBag.ProductName"></select>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script>
    $(function () {
        $("#add").click(function (e) {
            e.preventDefault();
            var i = ($(".side-effect").length) / 2;
            var n = '<br />' + '<input asp-for="SideEffects" class="form-control side-effect" name="SideEffects[0].SideEffect" />';
            $("#side-effect-list").append(n);
        });

    });
</script>

}

А для контроллера:

    // GET: SideEffect/Create
    public IActionResult Create()
    {
        ViewData["ProductName"] = new SelectList(_context.Products, "ProductId", "ProductName");
        return View();
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create([Bind("Id,SideEffects,ProductId, ProductName")] SideEffect sideEffect)
    {
        if (ModelState.IsValid)
        {
            _context.AddRange(sideEffect);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        ViewData["ProductName"] = new SelectList(_context.Products, "ProductId", "ProductName", sideEffect.ProductName);
        return View(sideEffect);
    }

Когда я отправляю форму, это добавляет значение для побочного эффекта. Предложения будут полезны.

...