Обновление / редактирование записи в C # CRUD Operations - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь отредактировать RoleName в моей таблице Roles. Все работает, за исключением того, что я получаю ошибки, что нет определения для Entry и SaveChanges методов. У меня есть using заявления для System.Data.Entity и EntityFramework, поэтому я не уверен, в чем проблема. Я уверен, что у меня есть все правильные пакеты и ссылки.

//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(); 
    }
}

1 Ответ

0 голосов
/ 08 марта 2019

Поскольку вы, кажется, не вызываете их из репозитория, Entry и SaveChanges являются методами, принадлежащими вашим EntityFramework Entities.

Вы пытаетесь вызвать их из экземпляра Roles.

Вам нужно создать экземпляр вашей сущности как db.

Вместо следующего:

Roles db = new Roles();

Вы должны сделать это (где Entities - это имя, которое вы дали своим сущностям):

Entities db = new Entities();

Теперь вы можете найти роль, которую хотите редактировать, используя Find:

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

Затем вам нужно отобразить ваши отредактированные свойства и затем сделать обновление.

Вы должны создавать экземпляры своих сущностей в конструкторе контроллера или хранилища сервисов, а не каждый раз, когда вам это нужно, но приведенный выше пример должен указать вам правильное направление.

...