添加新实体不会链接到现有的相关实体,而是创建一个新实体

本文关键字:实体 新实体 创建 一个 链接 添加 | 更新日期: 2023-09-27 18:36:18

我的问题是:我有一个"创建新游戏"表单。在该表单中,有一个填充了数据(类别)的下拉列表。因此,每个游戏都属于一个类别,游戏和类别都存储在数据库中。但是,游戏的插入不会将该游戏链接到所选类别。取而代之的是,将创建一个全新的无名称类别并将其分配给该游戏。

在 .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);