ASP.net - 如果缺席则插入记录

时间:2012-07-02 16:07:40

标签: asp.net sql sql-server formview

我有一个表单视图,人们用它来更新数据库中的记录。但是,最初记录将不存在,并且所有字段都将显示其默认值。第一次单击提交按钮时,应在数据库中创建记录。后续提交应更新现有记录。该记录由它的主键标识,该主键通过Request.QueryString传递给页面。

ASP.net是否提供了一种简单的方法,或者我是否需要推出自己的插入/更新逻辑实现?

2 个答案:

答案 0 :(得分:2)

读取值并对数据源/存储库执行GET请求。检查此密钥是否已存在实体/记录。如果是,请调用Update方法,否则插入。

像这样的东西

 //check the queystring param value is valid numeric expression 
//before trying to convert

 int itemId=Convert.ToInt32(Request.QueryString["itemId"]);

 var item=repo.GetItemById(itemId);
 if(item==null)
 {
   repo.InsertItem(item);
 }
 else
 {
    repo.UpdateItem();
 }

假设repo是您的Repositary实现的对象,其中存在Insert和UupdateItem方法,这些方法将对持久存储进行更新/插入数据。

答案 1 :(得分:2)

UPDATE dbo.table SET col = @col WHERE id = @id;

IF @@ROWCOUNT = 0
BEGIN
  INSERT dbo.table(id, col) SELECT @id, @col;
END

在2008年以上,你也可以使用MERGE,但我发现语法相当令人生畏(并且它不会将你与潜在的碰撞隔离开来,而你可能认为它也是如此)。