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); } } }
Most of this code is automatically generated code. Each time I click the Any action, except for the get / Roll / Create command, it causes the following error message:
System.Data.Entity.Edm.EdmEntityType :: EntityType "Roll" does not have a specific key. Define a key for this EntityType.
System.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet "Rolls" is based on the type "Roll", which does not have specific keys.
But, as you can see, there is a certain key. There is also a key defined for the Rolls database table that supports this model. Every answer I get from google suggests adding an [Key] annotation, and I already have one.
What am I doing wrong?
source share