SQL для вставки данных в несколько таблиц из одного POST в синтаксисе WebMatrix Razor - PullRequest
3 голосов
/ 17 августа 2010

У меня есть два поля формы, из которых пользователь отправляет «категорию» и «элемент».

Следующий код вставляет категорию отлично (я изменил ее из вводного PDF WebMatrix), но яя не знаю, как затем вставить «элемент» в таблицу элементов. Мне также нужно добавить Id новой категории в строку нового элемента.

Этот код работает до сих пор

@{ var db = Database.OpenFile("StarterSite.sdf");
var Category = Request["Category"]; //was name
var Item = Request["Item"]; //was description
if (IsPost) {
// Read product name.
Category = Request["Category"];
if (Category.IsEmpty()) {
Validation.AddFieldError("Category", "Category is required");
}
// Read product description.
Item = Request["Item"];
if (Item.IsEmpty()) {
Validation.AddFieldError("Item",
"Item type is required.");
}
// Define the insert query. The values to assign to the
// columns in the Products table are defined as parameters
// with the VALUES keyword.
if(Validation.Success) {
var insertQuery = "INSERT INTO Category (CategoryName) " +
"VALUES (@0)";
db.Execute(insertQuery, Category);
// Display the page that lists products.
Response.Redirect(@Href("~/success"));
}
}
}

I 'Я предполагаю / надеюсь, что на этот вопрос очень легко ответить, так что, надеюсь, больше подробностей не требуется - но, пожалуйста, дайте мне знать, если таковые имеются.Благодаря.

1 Ответ

4 голосов
/ 17 августа 2010

В WebMatrix есть метод Database.GetLastInsertId, который возвращает идентификатор последней вставленной записи (при условии, что вы используете столбец IDENTITY).Используйте это:

db.Execute(insertQuery, Category);
var id = (int)db.GetLastInsertId(); //id is the new CategoryId
db.Execute(secondInsertQuery, param1, id);
...