所以我有一个基于Visual Studio 2017的MVC5 ASP.NET应用程序,我有一个正确提取和显示数据的存储过程。但是,我希望用户能够单击创建,编辑或删除(我想要软删除,但我可以稍后处理),然后将该更改反映并保存在当前仅具有的实际SQL表中一个条目。我已经使用了实体框架,并被告知我需要有一种识别每一行的方式。所以我尝试创建一个ID属性,以便每一行都可以唯一标识。最初是主键的字段不正确。现在问题出在哪里。我试过回滚旧的迁移并运行一个新的迁移但无济于事。我已经尝试了所有可以想到的实体框架操作,但是我被卡住了。任何帮助都会很棒。
这是我编辑的代码,如果有人可以让我为我工作,我可以完成其余的工作。这几乎都是自动生成的。
// GET: Exclusions/Edit/5
public ActionResult Edit(int? ID)
{
if (ID == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Exclusion exclusion = db.Exclusions.Find(ID);
if (exclusion == null)
{
return HttpNotFound();
}
return View(exclusion);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "PolicyNo,PolicyMod,InsuredName,ClientID")] Exclusion exclusion)
{
if (ModelState.IsValid)
{
db.Entry(exclusion).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(exclusion);
}
这是我尝试运行的新迁移,即使它成功也没有区别
public partial class Migration1 : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Exclusion1",
c => new
{
ID = c.Int(nullable: false, identity: true),
PolicyNo = c.Int(nullable: false),
PolicyMod = c.String(),
InsuredName = c.String(),
ClientID = c.Int(nullable: false),
})
.PrimaryKey(t => t.ID);
}
public override void Down()
{
DropTable("dbo.Exclusion1");
}
}
如果需要更多信息,我很乐意提供,请问。提前谢谢。
编辑:这里有更多信息:
应用程序运行但是当我单击条目旁边的编辑时,它会将我带到HTTP Error 400.0页面。当我点击编辑时,网址变为XXXX / Exclusions / 124369622,这是旧主键的值而不是1,应该是新主键。但是,如果我在URL的末尾手动键入1,我仍然无处可去。我只是希望能够编辑一个字段,并在我的SQL表中反映出由存储过程创建的