将配方添加到数据库,如何?

时间:2013-05-20 03:41:16

标签: c# asp.net sql

这是我们的3张桌子。我们希望在表格中添加新配方。用户获得一个屏幕,他们可以在其中填写RecipeName,方法,他们可以从下拉菜单中选择3种成分。我们正在使用C#在Visual Studio中使用asp.net。

因此,当用户填写每个字段时,RecipeName和Method将被添加到Recipes表中。然后必须将属于配方的成分添加到IngredientRecipe表中。

如何编写此查询,因为我们不知道RecipeId,因为这个自动增量?

食谱

RecipeId     RecipeName                Method
1            Bacon and Brocilli        Bake the bacon and cook the brocolli
2            Rice with chicken         Cook the rice and bake the chicken
4            Potato and Carrot         Cook the potatoes and the carrots
6            Rice Chicken and Carrot   Cook everything

成分

IngredientId     IngredientName       IngredientCategorie
2                Bacon                3
3                Brocolli             2
4                Potato               1
5                Chicken              3
6                Carrot               2
7                Rice                 1

IngredientRecipe

RecipeUniqueID   RecipeId    IngredientId
1                   1         2
2                   1         3
3                   2         5
4                   2         7
5                   4         4
6                   4         6
7                   1         4
8                   2         6
9                   4         2
10                  6         7
11                  6         6
12                  5         5

4 个答案:

答案 0 :(得分:3)

首先保存配方和配料,使它们具有有效的ID,然后保存关联。

答案 1 :(得分:0)

添加配方后,您应该使用SCOPE_IDENTITYOUTPUT子句来获取新的RecipeID。

参考:Best way to get identity of inserted row?

答案 2 :(得分:0)

假设您使用的是SQL Server 2005或更高版本,则可以在INSERT语句中使用OUTPUT子句。 OUTPUT子句返回有关插入行所需的任何信息。

我认为OUTPUT子句是多用户数据库插入中最安全的机制,而不是使用SCOPE_IDENTITYIDENT_CURRENT See here on how to Use OUTPUT clause in INSERT statement

另见关于OUTPUT条款优于SCOPE_IDENTITY,@ {IDENTITY对此Stackoverflow thread

的优势的非常好的解释

答案 3 :(得分:0)

尝试类似

的内容

调用存储过程来插入配方

SP代码用于插入配方开始     插入食谱值('','')     选择@Scope_Identity()//这将返回最后一个自动递增的值,这将是您的配方ID 插入配方结束的SP代码

现在当你有食谱ID时,你可以传递它,用食材来映射食谱。

希望这有帮助