Как использовать метод таблицы с 2 соединениями с MVC в контроллере? - PullRequest
0 голосов
/ 10 ноября 2019

Вид сложного вопроса, который нужно задать.

Итак, есть класс для Car, CarDAL (уровень доступа к данным). Уровень интерфейса для User, IUserDAL. И класс бизнес-логики User.

Для MVC я получил CarsController и CarModel.

CarDAL, который в основном добавляет автомобиль, получает идентификатор и связывает его стаблица ссылок, которая связывает его с пользователем:

public void AddCar(int userID, CarDTO carDTO)
{
    using (SqlConnection con = new SqlConnection(GetConnectionString()))
    {
        string query = "DECLARE @ID TABLE(CarID INT) " +
            "INSERT INTO[dbo].[auto](Price, Addition, License_Plate, MaxKm, Type, Color, NumberOfSeats, Fueltype, reservationStatus, ModelID) " +
            "OUTPUT INSERTED.CarID INTO @ID " +
            "VALUES(@Price, @Addition, @LicensePlate, @MaxKm, @Type, @Color, @NumberOfSeats, @FuelType, @Reserved, @ModelID) " +
            "INSERT INTO[dbo].[User_Car](UserID, CarID, Role, Favorite) " +
            "SELECT @UserID, c.CarID, 'verkoper', 0 FROM @ID c";

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

            cmd.Parameters.AddWithValue("@UserID", userID);
        }
    }
}

Logic:

IUserDAL<UserDTO, CarDTO> userDAL;

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

И в контроллере мне нужно установить соединение с конкретным пользователем, который уже существует вбазы данных и связать его с машиной. Сначала подумал, что я просто попытался User user = new User(???);, но потом я не знал, что заполнить, чтобы получить UserID от пользователя в базе данных с определенной информацией.

Контекст: функция, которую я хочуэто то, что вы в основном войдете в систему и добавите автомобиль для продажи, а затем автомобиль будет подключен к вашему UserID, но я не знаю, как получить UserID без необходимости входа в систему.

Итак, что у меня сейчас в CarsController есть:

User user = new User(); //<- there needs to be a parameter of type UserDTO and I don't know what to fill in there.

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddCar(CarModel car)
{
    if(ModelState.IsValid)
    {
        user.AddCar(1, 
                    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");
    }

    return View();
}

И последнее в CarModel У меня есть:

public EnumsDTO.Color? Color { get; set; }
public EnumsDTO.Type? Type { get; set; }
public int? NumberOfSeats { get; set; }
public decimal? Price { get; set; }
public int? MaxKilometres { get; set; }
public decimal? Addition { get; set; }
public int? ModelID { get; set; }
public string? License_Plate { get; set; }
public EnumsDTO.Fuel? Fueltype { get; set; }
public bool ReservationStatus { get; set; }

tl; dr Мне нужна функция, с помощью которой вы можете добавить автомобиль в базу данных, но у автомобиля, очевидно, есть продавец, поэтому его необходимо подключить, войдя в систему. Поэтому, я думаю, что сначала необходимо выполнить вход. Но главная важная функция заключается в том, что вы можете добавить автомобиль и связать его вместе с пользователем в базе данных. Проблема в том, что я не знаю, как поместить это в код в контроллере.

ps также, если кто-то может сформулировать вопрос лучше, пожалуйста, скажите мне.

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