1

我是 ASP.NET MVC4 的新手,并且坚持一些非常基本的东西。

我有这个模型

public class Book
{
    [Key]
    public int BookID { get; set; }
    public string BookName { get; set; }
}

和发布视图为

@{
ViewBag.Title = "Publish";
}
<h2>Publish</h2>

@using (@Html.BeginForm("Publish", "Home", FormMethod.Post))
{
    @Html.TextBoxFor(m => m.BookID);
    @Html.TextBoxFor(m => m.BookName);
    <input type="submit" />
}

和这样的 Publish 操作方法

 [HttpPost]
    public ActionResult Publish(Book book)
    {
        if (ModelState.IsValid)
        {
            _db.Books.Add(book);
            _db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(book);
    }

我正在使用 SQL Server Compact 4.0 数据库。_db 是 DbContext 实例。

我有一个带有BookIDBookName字段的Books表。BookID 是主键。所以非常基础。

问题是当我转到发布视图时,在输入字段中输入BookIDBookName并按提交,我总是得到

*该列不能包含空值。[ 列名 = BookID,表名 = Books ] *例外。唯一可行的方法是,当我将 BookID 设为表中的 Identity 字段时,我当然不想要。

我在这个简单的结构中缺少什么?

4

1 回答 1

0

[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]

属性应该可以解决问题。


或者您也可以在您的DbContext类内部OnModelCreating方法中执行此操作。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
      base.OnModelCreating(modelBuilder);

      modelBuilder.Entity<Book>()
                   .Property(r => r.BookID) 
                   .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
于 2013-06-01T12:39:12.503 回答