我有一个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”的指定更多 在一次INSERT的SET子句或列列表中进行一次以上。一栏 不能在同一子句中分配多个值。修改 子句以确保列仅更新一次。如果这 语句更新或在视图中插入列,列别名可以 隐藏代码中的重复项。
答案 0 :(得分:1)
想到的问题是,您之间没有建立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链接到关联的参考属性。