Обновить родительскую таблицу из дочерней таблицы в ASP. NET CORE - PullRequest
1 голос
/ 10 июля 2020

У меня 2 стола; WorkSchedule (родительский) и WorkShiftBid (дочерний). Прямо сейчас я могу обновить WSBidStatus до «Одобрено», когда нажата кнопка на моей WorkShiftBid странице просмотра.

У меня есть столбец состояния (WorkScheduleStatus и WSBidStatus) в обоих таблицы и то, что я хочу, например, когда кнопка нажата, оба состояния будут обновлены до «Утверждено», где WorkScheduleID в обеих таблицах одинаковы.

Как должен выглядеть мой контроллер для этого?

Модель:

namespace Website.Models
{
    public class WorkScheduleModel
    {
        [Key]
        public Guid WorkScheduleID { get; set; }

        public string WorkScheduleStatus { get; set; }
    }

    public class WorkShiftBidModel
    {
        [Key]
        public Guid WorkShiftBidID { get; set; }

        public string WSBidStatus { get; set; }

        public Guid WorkScheduleID { get; set; }
        [ForeignKey("WorkScheduleID")]
        public WorkScheduleModel WorkSchedules { get; set; }
    }
}

Контроллер:

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> WorkShiftBid(Guid? id)
        {
            SqlConnection con = new SqlConnection();
            SqlCommand com = new SqlCommand();
            SqlDataReader dr;

            connectionString();
            con.Open();
            com.Connection = con;
            com.CommandText = "update WorkShiftBid set WSBidStatus ='Approved' where WorkShiftBidID = @id ";
            com.Parameters.AddWithValue("@id", id);
            dr = com.ExecuteReader();

            var workShiftBidModel = await _context.WorkShiftBid.FindAsync(id);

            if (dr.Read())
            {
                con.Close();
                return RedirectToAction(nameof(WorkShiftBid));
            }
            else
            {
                con.Close();
                return RedirectToAction(nameof(WorkShiftBid));
            }

            void connectionString()
            {
                con.ConnectionString = ".........................";
            }
        }

Вид:

@model IEnumerable<WorkShiftBidModel>

<table class="table">
    <thead>
        <tr>
            <td> 
            <th>
                .
                .
                .
            </th>
            <form method="post">
                <input type="submit" class="btn btn-success btn-block" value="Approve" asp-route-id="@item.WorkShiftBidID" asp-action="WorkShiftTab" asp-controller="Manager" />
            </form>
            </td>
        </tr>
        }
    </tbody>
</table>

1 Ответ

1 голос
/ 10 июля 2020

У меня недостаточно репутации, чтобы комментировать, но используете ли вы как Entity Framework, так и SqlCommands?

Тем не менее, вы можете найти родительский ключ и обновить его с помощью команды SQL следующим образом:

UPDATE WorkScheduleModel SET Status = 'Approved' WHERE Id = {ID}

Замените {Id} ключом родительской записи.

...