Проблема в mvc: отправка новой таблицы и запись идентификатора этой таблицы в другую таблицу в той же команде post - PullRequest
0 голосов
/ 16 декабря 2011

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

I4 таблицы с 1 таблицей, в которых хранятся остальные 3 идентификатора таблицы при каждой отправке страницы.

Таблица 1 создается одновременно с таблицей 2, где таблица 2 является таблицей форм, а одна - способом соединения всех4 вместе

One O = new One();
_db.Twos.AddObject(T);
O.TId = T.Id;
_db.Ones.AddObject(O);
_db.SaveChanges();

это работает, но у двух других таблиц есть проблемы с 3 работающими и 4 безубыточными с тем же кодом, что и у 3.

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

Edit-

Яне совсем уверен, что еще я могу добавить, но основная проблема в том, что у меня есть 1 базовая таблица с 3 подтаблицами, и новые записи создаются в каждой таблице в разное время.

3 сохраняет

1st =новый основной рекордерd + 1 новая запись вспомогательной таблицы - работает

2nd = обновить базовую запись + 1 новая запись вспомогательной таблицы - works

3rd = обновить базовую запись + 1 новая запись вспомогательной таблицы - разрывы

2-й / 3-й пример кода сохранения с Th, являющимся переданным табличным объектом, который представляет 3-ю таблицу, и O, являющимся базовой таблицей, как показано в коде вверху

O.Three = Th;
_db.SaveChanges();

Это правильно вытягивает идентификатори сохраняет его в основной таблице при втором сохранении, но не при третьем сохранении, даже если это тот же код и таблицы имеют одинаковые соединения.

Каждый pull-OId является идентификатором основных таблиц, поэтому каждая таблица знаетгде также сохранить.

public ActionResult Three(int OId, FormCollection fc)

Каждый толчок

[HttpPost]
    public ActionResult Three(Three Th, FormCollection fc)

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

Я также пытался использовать UpdateModel, но это тоже не сработало, так что никто не знала есть ли другие решения для этого?

1 Ответ

1 голос
/ 17 декабря 2011

Идентификатор из базы данных для T.id в строке O.TId = T.Id;не будет иметь отношения к этому моменту в вашем коде.Вы должны вызвать saveChanges ();для ввода идентификатора в объект.

Попробуйте:

One O = new One();
_db.Twos.AddObject(T);
_db.SaveChanges();
O.TId = T.Id;
_db.Ones.AddObject(O);
_db.SaveChanges();
...