Сохранение в базу данных с использованием EF Database First - проблема со значением по умолчанию - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в MVC и EF, и у меня возникла проблема при обновлении строки в базе данных SQL, для которой в столбце установлено значение по умолчанию.

Я установил для свойства (edmx) значение 'StoredGeneratedPattern' в значение 'Computed', чтобы вызвать значение по умолчанию в базе данных при вставке новой записи через EF DB 1st. Это прекрасно работает.

Однако, когда я обновляю объект, для которого это свойство установлено как 'computed', значение по умолчанию в базе данных все еще устанавливается. Я предположил, что, поскольку это свойство теперь имеет значение и не равно нулю, значение по умолчанию не будет вызываться.

Я обновил запись напрямую через SSMS, и это работает, как и ожидалось.

Первоначально я установил значение по умолчанию с помощью кода в модели персонажа, но этот код удаляется при обновлении edmx, поэтому я использую StoredGeneratedPattern.

Буду признателен, если кто-нибудь посоветуетмне о том, как это исправить. enter image description here

 public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Person person = db.People.Find(id);
        if (person == null)
        {
            return HttpNotFound();
        }
        ViewBag.LocationID = new SelectList(db.Locations, "LocationID", "Description", person.LocationID);
        ViewBag.StatusID = new SelectList(db.Status, "StatusID", "Description", person.StatusID);
        ViewBag.TitleID = new SelectList(db.Titles, "TitleID", "Description", person.TitleID);
        ViewBag.PersonID = new SelectList(db.Volunteers, "VolunteerID", "VolunteerID", person.PersonID);
        return View(person);
    }

    // POST: People/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "PersonID,TitleID,Forename,MiddleName,Surname,DateofBirth,Gender,LocationID,StatusID,LastUpdated,Archived")] Person person)
    {
        if (ModelState.IsValid)
        {
            db.Entry(person).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        ViewBag.LocationID = new SelectList(db.Locations, "LocationID", "Description", person.LocationID);
        ViewBag.StatusID = new SelectList(db.Status, "StatusID", "Description", person.StatusID);
        ViewBag.TitleID = new SelectList(db.Titles, "TitleID", "Description", person.TitleID);
        ViewBag.PersonID = new SelectList(db.Volunteers, "VolunteerID", "VolunteerID", person.PersonID);
        return View(person);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...