Почему моя запись удаляется из БД при попытке обновить запись с рамочным сущность MVC?

голоса
0

При попытке обновить запись из базы объекта запись удаляется из таблицы. Есть никаких ошибок не выброшены, так что на самом деле имеет меня озадачило то, что происходит.

Я довольно новый для рамки сущности и ASP.NET. Я изучаю его около месяца.

Я могу обновить запись без каких-либо проблем с SQL Server, но не из vs. Вот код для обновления БД:

 // GET: /Scorecard/Edit/5
    public ActionResult Edit(int id, string EmployeeName)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }


        CRS_Monthly crs_monthly = GetAgentById(id);

        crs_monthly.EmployeeName = EmployeeName;

        if (crs_monthly == null)
        {
            return HttpNotFound();
        }

        return View(crs_monthly);
    }

    // POST: /Scorecard/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include=REC_ID,Cur_Plan,Plan_Update,Comments,Areas_Improve,Strengths,UPDATED_BY,UPDATED_TIME,Agent_Recognition)] CRS_Monthly crs_monthly)
    {
        if (ModelState.IsValid)
        {
            crs_monthly.UPDATED_TIME = DateTime.Now;
            crs_monthly.UPDATED_BY = Request.LogonUserIdentity.Name.Split('\\')[1];
            db.Entry(crs_monthly).State = EntityState.Modified;  
            db.SaveChanges();

            return RedirectToAction(Index);
        }
        return View(crs_monthly);
    }

Когда я запускаю отладчик crs_monthly действует и выглядит хорошо до db.SaveChanges (). Любая помощь очень ценится!

Задан 06/01/2017 в 10:43
пользователем
На других языках...                            


1 ответов

голоса
0

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

Используя Bindэто ужасная практика, в любом случае. Главная проблема с ним в том , что все ваши свойства перечислены как строковые значения, и вы вводите проблемы технического обслуживания. Если удалить один из этих свойств или изменить название, то Bindсписок не обновляется автоматически. Вы должны помнить , чтобы изменить каждый экземпляр. Хуже того , если добавить свойства, вы должны помнить , чтобы вернуться и включить их в этом списке или иначе ваши данные просто получают тихо капали без предупреждения.

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

Ответил 06/01/2017 в 11:44
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more