添加新实体不会 link 到现有的相关实体,而是创建一个新实体
Adding new entity doesn't link to existing related entity, but creates new one instead
我的问题如下:
我有一个 "Create new Game" 表格。在该表单中,有一个下拉列表填充了数据(类别)。所以每个游戏都属于一个类别,游戏和类别都存储在数据库中。但是,插入游戏不会 link 该游戏到所选类别。相反,会创建一个全新的无名类别并将其分配给该游戏。
在 .cshtml 文件中:
<div class="editor-field">
@Html.DropDownListFor(model => model.Category.Id, GameManager.Controllers.GameController.AllCategories())
@Html.ValidationMessageFor(model => model.Category)
</div>
游戏模型:
public class Game
{
public int Id { get; set; }
public String Name { get; set; }
public virtual Studio Studio { get; set; }
public virtual Category Category { get; set; }
public float Price { get; set; }
public int Downloads { get; set; }
public DateTime ReleaseDate { get; set; }
}
品类模型:
public class Category
{
public int Id { get; set; }
public String Name {get; set;}
}
编辑:控制器
[HttpPost]
public ActionResult Create(Game game)
{
if (ModelState.IsValid)
{
db.Games.Add(game);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(game);
}
您需要加载类别:
game.Category = db.Categories.Single(c => c.Id == game.Category.Id);
db.Games.Add(game);
我的问题如下: 我有一个 "Create new Game" 表格。在该表单中,有一个下拉列表填充了数据(类别)。所以每个游戏都属于一个类别,游戏和类别都存储在数据库中。但是,插入游戏不会 link 该游戏到所选类别。相反,会创建一个全新的无名类别并将其分配给该游戏。
在 .cshtml 文件中:
<div class="editor-field">
@Html.DropDownListFor(model => model.Category.Id, GameManager.Controllers.GameController.AllCategories())
@Html.ValidationMessageFor(model => model.Category)
</div>
游戏模型:
public class Game
{
public int Id { get; set; }
public String Name { get; set; }
public virtual Studio Studio { get; set; }
public virtual Category Category { get; set; }
public float Price { get; set; }
public int Downloads { get; set; }
public DateTime ReleaseDate { get; set; }
}
品类模型:
public class Category
{
public int Id { get; set; }
public String Name {get; set;}
}
编辑:控制器
[HttpPost]
public ActionResult Create(Game game)
{
if (ModelState.IsValid)
{
db.Games.Add(game);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(game);
}
您需要加载类别:
game.Category = db.Categories.Single(c => c.Id == game.Category.Id);
db.Games.Add(game);