Как отправить изменения в таблицу базы данных в MVC, используя LINQ для SQL - PullRequest
0 голосов
/ 09 марта 2012

Обычно я делал это с помощью edmx, но на этот раз, чтобы использовать в моем проекте каскадные выпадающие списки, мне пришлось переключиться на использование linq для sql.

В любом случае вот что я пробовал

[HttpPost]
    public ActionResult Modules(ModuleViewModel mvm, FormCollection fc)
    {
        AllCourseDetail ACD = _dc.AllCourseDetails.Where(x => x.IdACD == mvm.cd.IdACD).FirstOrDefault();
        ACD = mvm.cd;
        if (ModelState.IsValid)
        {                
            UpdateModel(mvm);
            _dc.AllCourseDetails.Where(w => w.IdACD == mvm.cd.IdACD);
            UpdateModel(mvm.cd);
            _dc.SubmitChanges();
            Session.Add("redirectedEditcompletedsubmission", "yes");
            return RedirectToAction("List");
        }
        else
        {
            Session.Add("redirectedEditvalidation", "yes");
            return RedirectToAction("Index", "Home");
        }
    }

На первом у меня не было ничего выше оператора if, и внутри у меня было только updatemodel и отправка изменений, но независимо от того, какую комбинацию я пробую, просто не сохраняется.

Также mvm.cd является таблицей AllCourseDetail, на которую в модели представления ссылаются как на cd, и я должен использовать модель представления как

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Проблема в том, что вы

загрузка сущностей из БД

AllCourseDetail ACD = _dc.AllCourseDetails.Where(x => x.IdACD == mvm.cd.IdACD).FirstOrDefault();

затем полностью отбрасываю их

ACD = mvm.cd;

затем обновите вашу модель до модели

UpdateModel(mvm);

, а затем запустить запрос и ничего не делать с результатами

_dc.AllCourseDetails.Where(w => w.IdACD == mvm.cd.IdACD);

Извините, но ваш метод - полный беспорядок ...

Я бы посоветовал вам взглянуть на NerdDinner пример, чтобы узнать о MVC.

0 голосов
/ 13 марта 2012

Кажется, я понял это с самого начала со всем, что было нужно, это updatemodel и submitchanges, но только из-за проблем с принятием объекта viewmodel назначаемой таблицы.

[HttpPost]
    public ActionResult Modules(ModuleViewModel mvm, FormCollection fc)
    {
        AllCourseDetail ACD = _dc.AllCourseDetails.Where(x => x.IdACD == mvm.cd.IdACD).FirstOrDefault();
        if (ModelState.IsValid)
        { 
            UpdateModel(ACD, "cd");
            _dc.SubmitChanges();
            Session.Add("redirectedEditcompletedsubmission", "yes");
            return RedirectToAction("List");
        }
        else
        {
            Session.Add("redirectedEditvalidation", "yes");
            return RedirectToAction("Index", "Home");
        }
    }

Я забылчто при передаче объектов viewmodel ему не нужен полный путь при использовании в UpdateModel (ACD, "mvm.cd");но вместо этого, оглянувшись в последний раз, я сделал это в mvc, используя edmx, что это был просто "cd".

Ofc, непосредственно назначающий значения таблице из таблицы модели, также работал, но просто не с назначениемданные из таблицы модели записываются в таблицу и затем обновляются / сохраняются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...