Как редактировать данные в базу данных с помощью ASP.NET-MVC

#c# #asp.net #asp.net-mvc

Вопрос:

Я просматривал примеры редактирования данных в базе данных, и я продолжаю находить этот код:

 var std = studentList.Where(s => s.StudentId == Id).FirstOrDefault();
 

Мне было интересно, как я могу использовать этот код на СВОЕМ веб-сайте, потому что я использовал другой метод.
Основная часть этого вопроса-это часть РЕДАКТИРОВАНИЯ, я не знаю, как преобразовать приведенный выше пример в мое редактирование. Я действительно не могу понять, что такое «Список студентов» в моем коде.

Кроме того, это ссылка, по которой я следую: https://www.tutorialsteacher.com/mvc/create-edit-view-in-asp.net-mvc

  namespace hdsportal.Pages

{
    public class HomeController : Controller
    {
        SqlCommand com = new SqlCommand();
        SqlDataReader dr;
        SqlConnection con = new SqlConnection();
        List<GestaoAlertas> addresses = new List<GestaoAlertas>();
        List<GestaoUtilizadores> addresses2 = new List<GestaoUtilizadores>();

        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
            con.ConnectionString = "secret";
        }

        public IActionResult Gestao_Alertas()
        {
            FetchData();
            return View(addresses);
        }

        public IActionResult Gestao_Utilizadores()
        {
            FetchData2();
            return View(addresses2);
        }
      

        [Route("")]
        public IActionResult Index()
        {
            FetchData();
            return View(addresses);
        }

        public IActionResult Edit(int ID = 0)
        {
            GestaoAlertas _teste = addresses.FirstOrDefault(x => x.ID == ID);
            return View(_teste);
        }

        public IActionResult Privacidade()
        {
            return View();
        }

        public IActionResult Contatos()
        {
            return View();
        }

        public IActionResult QuemSomos()
        {
            return View();
        }

        private void FetchData()
        {
                if (addresses.Count > 0)
                {

                    addresses.Clear();
                }
                try
                {
                    con.Open();
                    com.Connection = con;
                    com.CommandText = "SELECT [ID], [SYSTEM_NAME], [SYSTEM_STATUS], [SYSTEM_SHORTMSG] FROM [CORE_SYS_STATUS]";
                    dr = com.ExecuteReader();
                    while (dr.Read())
                    {
                        addresses.Add(new GestaoAlertas()
                        {
                            ID = (int)dr["ID"]
                        ,
                            SYSTEM_NAME = dr["SYSTEM_NAME"].ToString()
                        ,
                            SYSTEM_STATUS = dr["SYSTEM_STATUS"].ToString()
                        ,
                            SYSTEM_SHORTMSG = dr["SYSTEM_SHORTMSG"].ToString()

                        });
                    }
                    con.Close();
                    }
              //Mostra o erro se houver um
                catch (Exception ex)
                {
                   throw ex;
                }
        }

        private void FetchData2()
        {
            //Reinicia a varíavel addresses se já conter algo
            if (addresses2.Count > 0)
            {

                addresses2.Clear();
            }
            try
            {
                con.Open();
                com.Connection = con;
                com.CommandText = "SELECT [NumMec], [NomeCompleto], [Activo] FROM [CORE_USERS] WHERE [Activo] = 1 ";
                dr = com.ExecuteReader();
                while (dr.Read())           
                {
                    //Lê os dados da base de dados 
                    addresses2.Add(new GestaoUtilizadores()
                    {
                        NumMec = dr["NumMec"].ToString()
                    ,
                        NomeCompleto = dr["NomeCompleto"].ToString()
                    ,
                        Activo = dr["Activo"].ToString()

                    });
                }
                con.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
   
}
 

Комментарии:

1. В этом комментарии, studentList вероятно, объект Entitiy Framework, представляющий таблицу базы данных. Таким образом, в основном в этой строке будет указана точная запись в таблице, которую необходимо обновить. Предполагая, что вы находитесь в процессе отправки данных, затем вы зададите свойства объекта в соответствии с данными, представленными в форме, и сохраните изменения. Это EF-эквивалент выполнения запроса на обновление в SQL. Но вы, кажется, используете ADO.NET а не EF, так что, возможно, это не имеет к вам отношения.

2. Вероятно, вам следует изучить различные подходы, затем выбрать тот, который вам больше всего нравится, и следовать некоторым руководствам по этому подходу. Если вы хотите сделать raw ADO.NET как ты это делаешь, все в порядке. Вы также можете изучить микро-ORM, такие как Dapper , или полноценную ORM, такую как Entity Framework, ядро Entity Framework или NHibernate. Следуя инструкциям, убедитесь, что они предназначены для выбранной вами библиотеки.

3. Примечание, у вас throw ex; в коде ex есть исключение, которое вы поймали. Это приводит к потере трассировки стека и делает отладку намного более болезненной. Чтобы сохранить трассировку стека, вы можете просто throw; . Однако, поскольку вы не делаете ничего значимого в своем блоке catch, вы можете также удалить всю эту попытку/уловку. Это просто добавляет визуальный беспорядок в ваш код.