c# - Database.ExecuteSqlCommand 的返回值是什么?

标签 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。整数是什么意思? documentation只是说

The result returned by the database after executing the command.

我做了几个测试,如果它修改了一行,它看起来像是 1,如果没有任何改变,它看起来像是 0。返回值是修改的行数吗?

最佳答案

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

关于c# - Database.ExecuteSqlCommand 的返回值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49861707/

相关文章:

c# - DDL 的选定索引在 asp .net 中始终等于零

c# - 基于平台或字节序的条件编译器指令?

java - hibernate 中的内连接

c# - 插入时违反 PRIMARY KEY 约束

c# - 如何在 Iron python 中加载用 C++ 编写并用 C# 包装的 DLL?

sql - 如何计算SQL Server 2012中每行的百分比?

php - 存储未知长度的数组

sql - 选择进入 View

sql-server - 子查询在 SSMS 2016 中返回了超过 1 个值

sql-server - Windows 2003 中 JDBC 连接可用的套接字数