【问题标题】:Update/Edit an Entry in C# CRUD Operations在 C# CRUD 操作中更新/编辑条目
【发布时间】:2019-03-08 19:03:48
【问题描述】:

我正在尝试在Roles 表中编辑RoleName。一切正常,除了我收到 EntrySaveChanges 方法没有定义的错误。我对System.Data.EntityEntityFramework 都有using 声明,所以我不确定问题是什么。我很确定我拥有所有正确的软件包和参考资料。

//Get Edit
[HttpGet]
public ActionResult Edit(Roles model)
{
    return View(); 
}

//Put Edit
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Comtrex_ICU.Models.Roles model, int RoleId, 
    Roles RoleName)
{
    try
    {
        Roles db = new Roles();

        db.Entry(RoleName).State = EntityState.Modified;
        db.SaveChanges();

        return RedirectToAction("RolesIndex");
    }
    catch 
    { 
        return View(); 
    }
}

【问题讨论】:

  • 能否提供角色类的定义。似乎编译器无法在 Roles 类中找到两个方法:Entry 和 SaveChanges
  • 为什么您的 POST Edit 签名有两个角色实例被传递给它? Roles RoleName 是什么?如何解决?

标签: c# asp.net model-view-controller crud


【解决方案1】:

由于您似乎没有从存储库中调用它们,EntrySaveChanges 是属于您的 EntityFramework 实体的方法。

您正试图从Roles 的实例中调用它们。

您需要将您的实体实例化为db

而不是以下:

Roles db = new Roles();

您应该这样做(其中 Entities 是您为实体指定的名称):

Entities db = new Entities();

您现在可以使用Find 找到要编辑的角色:

var editRole = db.Roles.Find(RoleId);

然后您需要映射您编辑的属性,然后进行更新。

您应该在控制器或服务存储库的构造函数中实例化您的实体,而不是每次都需要它,但上面的示例应该为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2011-05-21
    • 2017-02-26
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多