我有一个表单视图,人们用它来更新数据库中的记录。但是,最初记录将不存在,并且所有字段都将显示其默认值。第一次单击提交按钮时,应在数据库中创建记录。后续提交应更新现有记录。该记录由它的主键标识,该主键通过Request.QueryString传递给页面。
ASP.net是否提供了一种简单的方法,或者我是否需要推出自己的插入/更新逻辑实现?
答案 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
,但我发现语法相当令人生畏(并且它不会将你与潜在的碰撞隔离开来,而你可能认为它也是如此)。