Как загрузить значение последнего employeeid + 1 в действии add - PullRequest
0 голосов
/ 07 января 2019

У меня есть имя контроллера emp, есть действие add

мне нужно, когда действие добавляет вид загруженного дисплея, последнее значение увеличивается на единицу в

текстовое поле employeeid.

означает, что у меня в таблице сотрудников есть значение employeeid 1, а затем при добавлении действия

просмотр загруженного employeeid должен иметь 2.

так что, как это сделать, пожалуйста?

в действии, что я пишу

[HttpGet] Скрыть копию кода public IActionResult Create () { что я пишу здесь } на вид добавить что я пишу здесь

 <div class="form-group">
                <label asp-for="EmployeeId" class="control-label"></label>
                <input asp-for="EmployeeId" class="form-control" />
                <span asp-validation-for="EmployeeId" class="text-danger"></span>
            </div>

Что я пробовал:

  var results = _context.GetAll().Where(Employee => Employee.EmployeeId> Employee.EmployeeId).OrderBy(Employee => Employee.EmployeeId).FirstOrDefault();

и я передаю модель для просмотра

<form asp-action="Create">

            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="EmployeeId" class="control-label"></label>
                <input asp-for="EmployeeId" class="form-control" />
                <span asp-validation-for="EmployeeId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="BranchCode" class="control-label"></label>
                <input asp-for="BranchCode" class="form-control" />
                <span asp-validation-for="BranchCode" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EmployeeName" class="control-label"></label>
                <input asp-for="EmployeeName" class="form-control" />
                <span asp-validation-for="EmployeeName" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EmployeeAge" class="control-label"></label>
                <input asp-for="EmployeeAge" class="form-control" />
                <span asp-validation-for="EmployeeAge" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="JoinDate" class="control-label"></label>
                <input asp-for="JoinDate" class="form-control" />
                <span asp-validation-for="JoinDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="BirthDate" class="control-label"></label>
                <input asp-for="BirthDate" class="form-control" />
                <span asp-validation-for="BirthDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <div class="checkbox">
                    <label>
                        <input asp-for="Active" /> @Html.DisplayNameFor(model => model.Active)
                    </label>
                </div>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </form>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Пожалуйста, не используйте .GetAll(), это будет причиной проблем с производительностью. это означает, что вы загружаете все записи о сотрудниках на стороне приложения, а затем фактически запрашиваете загруженные данные о сотрудниках. просто подумайте, если у вас есть 50K + сотрудник. Таким образом, вы должны использовать методы расширения LINQ IQueryable, которые будут генерировать операцию SQL на основе вашего запроса проектирования.

Справка Ссылка: .NET Entity Framework - IEnumerable VS. IQueryable

Пожалуйста, попробуйте это, если вы хотите сделать некоторые другие выражения.

context.Employee.Select(x => x.EmployeeId).DefaultIfEmpty(0).Max()+1
0 голосов
/ 07 января 2019

Если ваша модель имеет свойство EmployeeId, установите это значение, как показано ниже.

public IActionResult Create()
{
    var model = new Employee();
    model.EmployeeId = _context.GetAll().Max(Employee => Employee.EmployeeId).FirstOrDefault() + 1;

    return View(model);
}

Или, если у вас нет Model для перехода на View, используйте ViewBag.

ViewBag["maxEmployeeId"] = _context.GetAll().Max(Employee => Employee.EmployeeId).FirstOrDefault() + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...