Pau*_*ler 5 c# asp.net-mvc model
using System;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
//my model
public class Roll
{
[Key]
public uint Id { get; set; }
public long RandomSeed { get; set; }
public string Expression { get; set; }
public DateTime DateCreated { get; set; }
public long Total { get; set; }
}
//my context
public class DiceboxContext : DbContext
{
public DbSet<Roll> Rolls { get; set; }
}
//my controller
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace dicebox.Controllers
{
public class RollController : Controller
{
private DiceboxContext db = new DiceboxContext();
//
// GET: /Roll/
public ActionResult Index()
{
return View(db.Rolls.ToList());
}
//
// GET: /Roll/Details/5
public ActionResult Details(int id = 0)
{
Roll roll = db.Rolls.Find(id);
if (roll == null)
{
return HttpNotFound();
}
return View(roll);
}
//
// GET: /Roll/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Roll/Create
[HttpPost]
public ActionResult Create(Roll roll)
{
if (ModelState.IsValid)
{
db.Rolls.Add(roll);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(roll);
}
//
// GET: /Roll/Edit/5
public ActionResult Edit(int id = 0)
{
Roll roll = db.Rolls.Find(id);
if (roll == null)
{
return HttpNotFound();
}
return View(roll);
}
//
// POST: /Roll/Edit/5
[HttpPost]
public ActionResult Edit(Roll roll)
{
if (ModelState.IsValid)
{
db.Entry(roll).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(roll);
}
//
// GET: /Roll/Delete/5
public ActionResult Delete(int id = 0)
{
Roll roll = db.Rolls.Find(id);
if (roll == null)
{
return HttpNotFound();
}
return View(roll);
}
//
// POST: /Roll/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Roll roll = db.Rolls.Find(id);
db.Rolls.Remove(roll);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中大多数是样板自动生成的代码。每当我按下get / Roll / Create Action以外的Any动作时,它都会爆炸并显示以下错误消息:
System.Data.Entity.Edm.EdmEntityType :: EntityType'Roll'没有定义键。定义此EntityType的键。
System.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet'Rolls'基于未定义键的'Roll'类型。
但是正如您已经看到的,这里定义了一个密钥。还为数据库表“ Rolls”定义了一个支持该模型的键。我从Google得到的每个答案都建议添加[Key]批注,而我已经有了。
我究竟做错了什么?
将 Id 更改为 int:
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
我将您的代码复制到一个新的 MVC 项目中,搭建了索引、创建和编辑视图,并且我能够毫无问题地创建和编辑卷。
| 归档时间: |
|
| 查看次数: |
12915 次 |
| 最近记录: |