Database.ExecuteSqlCommand的返回值是多少?

时间:2018-04-16 16:06:08

标签: c# sql sql-server entity-framework

稍微修改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。返回值是修改的行数吗?

1 个答案:

答案 0 :(得分:4)

对于大多数数据库,这意味着受命令影响的行数。我理论上,上帝禁止存在这样的事情,数据库供应商可以自由地返回任何内容,然后您需要查看特定数据库的文档,了解数字的含义。

相关问题