2010-08-16 5 views
3

J'ai deux champs de formulaire à partir de laquelle l'utilisateur soumet une «catégorie» et un «élément».SQL pour insérer des données dans plusieurs tables à partir d'un POST dans WebMatrix Razor Syntaxe

Le code suivant insère la catégorie fine (je l'ai modifié à partir de l'intro PDF de WebMatrix) mais je ne sais pas comment insérer ensuite l'élément dans la table Items. Je devrai également ajouter l'ID de la nouvelle catégorie à la nouvelle ligne.

C'est le code qui fonctionne jusqu'à présent

@{ 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")); 
} 
} 
} 

Je devine/espérant que c'est une question très facile de répondre si nous espérons qu'il n'y a pas beaucoup plus de détails requis - mais s'il vous plaît laissez-moi savoir s'il y a. Merci.

Répondre

4

Il existe une méthode Database.GetLastInsertId dans WebMatrix qui renvoie l'ID du dernier enregistrement inséré (en supposant qu'il s'agit d'une colonne IDENTITY que vous utilisez). Utilisez:

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