将外键保存到数据库?

时间:2016-10-06 13:08:54

标签: asp.net asp.net-mvc entity-framework code-first relation

我有一个桌面板(但是把它看成是一个帖子)。对于每个职位/董事会,我想增加投票的可能性,并创建了一个表格投票。每个帖子都可以有一个投票数(例如5个),每个投票都属于一个职位/董事会。我认为它必须是一对一的关系。正确?

这是我的模特

public class Board
{
    [Key]
    public int MessageId { get; set; }
    public String Message { get; set; }

    [Required]
    public Vote Vote { get; set; }
}

public class Vote
{
    [Key]
    public int? VoteId { get; set; }
    public int? Votes { get; set; }

    public Board Board { get; set; }

}

当我尝试创建新帖子ModelState.IsValid时,它是错误的,没有错误,并且在我调试时看不清楚原因。

这是我的控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "messageId,message,VoteId,Votes")] Board board)
    {
        if (ModelState.IsValid)
        {
            db.Boards.Add(board);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return RedirectToAction("Index");
    }

我认为应该没问题,因为我在模型中接受null投票。

我已在两个表中手动添加了一些数据,并在网页上显示了包含代码的结果,但我无法创建新帖子。

展示帖子/主板

    // GET: Boards
    public ActionResult Index()
    {
        var data = db.Boards.Include("Vote").ToList();

        return View(data);
    }

和观点。

@model IEnumerable<Klotterplank.Models.Board>

            @foreach (var item in Model)
            {
                <ul>
                    <li class="board-blocks">@Html.DisplayFor(modelItem => item.Message)</li>
                    <li class="board-blocks">@Html.DisplayFor(modelItem => item.Vote.Votes)</li>
                </ul>
            }

1 个答案:

答案 0 :(得分:0)

如果每个帖子都有最大值一票和一票只属于一个帖子,投票只是一个int,我建议添加&#34;投票&#34;作为nullable int to&#34; Post&#34;所以你甚至不需要投票表