изменения метода сохранения не удаются - PullRequest
0 голосов
/ 05 марта 2019

У меня есть метод post, который создает новый крем

public ActionResult CreateCream(CreamModel cream, string creamTypeId)
    {
        if (ModelState.IsValid)
        {
            if (creamTypeId != string.Empty)
            {
                try
                {
                    cream.CreamTypeModel_id = int.Parse(creamTypeId);
                    creamManager.CreateCream(cream);
                    TempData["message"] = string.Format("Игрок {0} сохранен", cream.Name);
                    return RedirectToAction("Index", "Home");
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
            }
        }

        ViewBag.ChoosingCreamType = GetCreamSelectList();
        return View(cream);
    }

когда я звоню

public void CreateCream(CreamModel newCream)
    {
        if (newCream.Id == 0)
        {
            context.CreamModels.Add(newCream);
            context.SaveChanges();
        }
    } 

когда я звоню context.SaveChanges(), код не работает, и я иду на View вместо redirect! Я не понимаю, почему это не работает? Если я удаляю SaveChanges(), он выполняется, но не сохраняется в базе данных.

моя модель

public class CreamModel
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string ImageName { get; set; }

    public int? CreamTypeModel_id { get; set; }
    public CreamTypeModel CreamTypeModel { get; set; }
}

сообщение об ошибке

SqlException: указано имя столбца 'CreamTypeModel_id' чем один раз в предложении SET или списке столбцов INSERT. Колонна нельзя присвоить более одного значения в одном и том же предложении. Изменить чтобы убедиться, что столбец обновляется только один раз. Если это оператор обновляет или вставляет столбцы в представление, алиасинг столбцов может скрыть дублирование в вашем коде.

1 Ответ

1 голос
/ 06 марта 2019

Проблема, которая приходит на ум, состоит в том, что у вас есть отношения без ассоциирования FK:

public class CreamModel
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string ImageName { get; set; }

    [ForeignKey("CreamTypeModel")] 
    public int? CreamTypeModel_id { get; set; }
    public virtual CreamTypeModel CreamTypeModel { get; set; }
}

Это связывает FK со связанным эталонным свойством.

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