稍微修改this question的答案,假设我运行此代码:
public int SaveOrUpdate(MyEntity entity)
{
var sql = @"MERGE INTO MyEntity
USING
(
SELECT @id as Id
@myField AS MyField
) AS entity
ON MyEntity.Id = entity.Id
WHEN MATCHED THEN
UPDATE
SET Id = @id
MyField = @myField
WHEN NOT MATCHED THEN
INSERT (Id, MyField)
VALUES (@Id, @myField);"
object[] parameters = {
new SqlParameter("@id", entity.Id),
new SqlParameter("@myField", entity.myField)
};
return context.Database.ExecuteSqlCommand(sql, parameters);
}
这实际上会运行并返回一个int。 int是什么意思? documentation只是说
执行命令后数据库返回的结果。
我做了几次测试,看起来如果它修改了一行就是1,如果没有改变则看起来是0。返回值是修改的行数吗?
答案 0 :(得分:4)
对于大多数数据库,这意味着受命令影响的行数。我理论上,上帝禁止存在这样的事情,数据库供应商可以自由地返回任何内容,然后您需要查看特定数据库的文档,了解数字的含义。