我是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" />
}
这样的发布动作方法
[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实例。
我有一个表 Books ,其中包含 BookID 和 BookName 字段。 BookID是主键。非常基本。
问题是当我转到发布视图,在输入字段中输入 BookID 和 BookName 并按提交,我总是
*该列不能包含空值。 [列名= BookID,表名=书籍] * 例外。唯一可行的方法是当我将BookID设置为表格中的一个身份字段时,我当前不想要这个字段。
在这个简单的结构中我缺少什么?
答案 0 :(得分: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);
}