Данные из viewmodel не попадают в базу данных C # MVC - PullRequest
0 голосов
/ 10 ноября 2019

Модель в параметре имеет значения вплоть до метода DAL, где выполняется запрос, но каким-то образом ничего не меняется в базе данных. Кто-нибудь понял, почему? Также не было ошибок. Controller:

public ActionResult AddCar(CarModel car)
{
        if(ModelState.IsValid)
        {
            u.AddCar(new DTO.CarDTO(car.Color, car.Type, car.NumberOfSeats, car.Price, car.MaxKilometres, car.Addition, car.ModelID, car.License_Plate, car.Fueltype, car.ReservationStatus));
            return RedirectToAction("Index", "Home");
        }
        return View();
}

Logic:

public void AddCar(CarDTO c)
{
    carDAL.AddCar(new CarDTO(c.Color, c.Type, c.NumberOfSeats, c.Price, c.MaxKilometres, c.Addition, c.ModelID, c.License_Plate, c.Fueltype, c.ReservationStatus));
}

Interface layer:

public interface ICarDAL<CarDTO>
{
    public void AddCar(CarDTO c) { }
}

DAL, класс имеет строку подключения:

public void AddCar(CarDTO c)
{
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        string query = "INSERT INTO [dbo].[Car](Price, Addition, License_Plate, MaxKm, Type, Color, NumberOfSeats, Fueltype, reservationStatus, ModelID) " +
            "VALUES(@Price, @Addition, '@LicensePlate', @MaxKm, '@Type', '@Color', @NumberOfSeats, @FuelType, @Reserved, @ModelID)";

        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@Price", c.Price);
            cmd.Parameters.AddWithValue("@Addition", c.Addition);
            cmd.Parameters.AddWithValue("@LicensePlate", c.License_Plate);
            cmd.Parameters.AddWithValue("@MaxKm", c.MaxKilometres);
            cmd.Parameters.AddWithValue("@Type", c.Type);
            cmd.Parameters.AddWithValue("@Color", c.Color);
            cmd.Parameters.AddWithValue("@NumberOfSeats", c.NumberOfSeats);
            cmd.Parameters.AddWithValue("@FuelType", c.Fueltype);
            cmd.Parameters.AddWithValue("@ReservationStatus", c.ReservationStatus);
            cmd.Parameters.AddWithValue("@ModelID", c.ModelID);
        }
    }
}

Обнаружил ошибку, но я все еще не знаю, как ее исправить: https://imgur.com/xjKIqED

Решение : Прежде всего мне нужно было использовать ExecuteNonQuery(), чтобы сделатьзапрос на самом деле что-то делает ... Я думал, что SqlCommand уже выполнил это для вас. Во-вторых, мой пароль состоял из ************, который я думал, что это не имеет значения, но я думаю, что это имело значение.

Ответы [ 2 ]

1 голос
/ 11 ноября 2019
public void AddCar(CarDTO c)
{
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        if (con.State==ConnectionState.Closed)
            {                      
                con.Open();   
             }
         [Your code]
         con.Close();
    }
 }
0 голосов
/ 10 ноября 2019

Вам может понадобиться использовать функцию «сохранить», я не вижу в вашем коде нигде, где команда SQL фактически выполняется, я вижу, что она создается, но в прошлом я использовал ее с чем-то похожим:cmd.Execute ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...